Avoir travaillé sur un projet généré via create-react-native-app
. Cela fait un certain temps que j'utilise le projet avec succès, mais j'essaie maintenant de tester l'application via exp start --tunnel
. Je constate soudainement une erreur (bien que cela fonctionnait auparavant) de la forme:
[22:08:19] /path/to/node_modules/react-native-scripts/build/bin/crna-entry.js: Plugin/Preset files are not allowed to export objects, only functions. In /path/to/node_modules/babel-preset-expo/index.js
[22:08:19] Failed building JavaScript bundle.
Nous avons vu des publications qui semblent traiter du problème ( https://github.com/babel/babel/issues/6808 et les fichiers Plugin/Preset de Babel ne sont pas autorisés à exporter des objets, mais uniquement fonctions ), mais je suis tout à fait nouveau de réagir-n'importe quoi et de ne pas comprendre ce que bable
est, alors j'ai du mal à comprendre comment appliquer ces messages à ma propre situation.
Mon fichier .bablerc (comme il semble être pertinent dans les autres messages) est:
{
"presets": ["babel-preset-expo"],
"env": {
"development": {
"plugins": ["transform-react-jsx-source"]
}
}
}
J'ai essayé npm cache clean --force && rm -rf node_modules && rm -f package-lock.json && npm install
sans changement. Ce qui semble aider est de passer de [email protected] à 0.55 (comme indiqué ici: Créer une application native React. - Les fichiers de plug-in/de paramètres prédéfinis ne sont pas autorisés, mais uniquement les fonctions }) , mais cela ne semble pas résoudre directement le problème et constitue plutôt une solution de contournement . Tout conseil sur ce qui devrait être fait ici serait apprécié (tout autre fichier devant être inclus pour faciliter le débogage?).
** En réponse à cette question étant marquée comme une duplication potentielle de Créer une application native React. - Les fichiers de plug-in/de préconfiguration ne sont pas autorisés à exporter des objets, mais uniquement des fonctions },
Constaté que le problème est le suivant:
À un moment donné, vous devez avoir effectué un npm update
qui a mis à jour le réactif natif à 0.56 et l'expo à 28.0.0.
En regardant les docs de react-native ( https://facebook.github.io/react-native/docs/upgrading.html#create-react-native-app-projects ), react-native semble requièrent l’installation de versions de react-native
, react
et expo
qui sont toutes spécifiquement compatibles les unes avec les autres. Vous trouverez une matrice des versions des paquets compatibles entre eux: https://github.com/react-community/create-react-native-app/blob/master/VERSIONS.md et dit
Chaque version de ces dépendances est uniquement compatible avec une plage de versions étroite des deux autres.
Au moment où ces lignes sont écrites le document a été mis à jour pour la dernière fois le 27 avril 2018, il est donc difficile de savoir quelles versions de react et expo (qui vient de sortir la version 28.0.0) doivent être utilisées en combinaison avec now-out [email protected]. La version la plus récente de react-native que est documentée est [email protected] (pour aller avec [email protected] et [email protected]), ce qui, je pense, explique pourquoi rétrogradant pour réagir- [email protected] a été utile dans ce cas (je ne sais pas pourquoi il n'y a pas encore de documentation dans la matrice pour [email protected]), mon package.json ressemblant maintenant à:
...
"dependencies": {
"@expo/vector-icons": "^6.3.1",
"eslint": "^4.19.1",
"expo": "^27.1.0",
"prop-types": "^15.6.2",
"react": "16.3.1",
"react-native": "^0.55.4",
"react-native-mail": "^3.0.6",
"react-native-modal-dropdown": "^0.6.2",
"react-navigation": "^2.6.2",
"react-redux": "^5.0.7",
"redux": "^4.0.0",
"tcomb-form-native": "^0.6.14",
"uuid": "^3.3.2"
}
}
Le même problème s'est produit avec moi aujourd'hui. Apparemment, react-native a été mis à niveau vers la version 0.56.0 . La version réactualisée de la version réactive-native vers la version 0.55.0 a résolu mon problème.
npm install [email protected]
La raison a été entièrement expliquée par @lampShadesDrifter, cependant je vais ajouter une solution plus rapide consistant à utiliser un sdk réactif natif fourni par expo: https://github.com/expo/react-native/
Vous pouvez donc ajouter ceci à vos dépendances avec expo sdk 29:
"react-native": "https://github.com/expo/react-native/archive/sdk-29.0.0.tar.gz",
J'ai rencontré ce problème aujourd'hui et suis tombé sur plusieurs solutions qui suggèrent de déclasser react, react-native, expo ou en faisant correspondre la version de expo avec le react-native suggéré par @lampShadesDrifter
cependant,
npm install
a fait le tour pour moi