web-dev-qa-db-fra.com

Voyant soudainement l'erreur "Les fichiers plug-in/prédéfinis ne sont pas autorisés à exporter des objets, seules les fonctions" dans le projet create-react-native-app

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 }, 

  1. cette question a en fait été citée dans l'article et l'explication de la raison pour laquelle cette question a été postée en dépit de l'existence de l'autre a été incluse dans le dernier paragraphe et 
  2. ma dernière réponse à cette question explique aux autres utilisateurs pourquoi la rétrogradation à 0.55 résout le problème (et cite les documents pertinents que les utilisateurs peuvent inspecter), qui (au moment de cette question posting) n’était pas présent dans l’autre question citée (bien que, à l’heure actuelle, l’utilisateur qui a marqué cette question en double ait maintenant une réponse dans la question citée qui explique également pourquoi la mise à niveau inférieur à 0,55 fonctionne). 
11
lampShadesDrifter

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"
  }
}
18
lampShadesDrifter

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]
9
user2209783

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",

1
Radhwane Chebaane

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

0
s.khetcho