15 votes

La propriété body[41] de BlockStatement s'attendait à ce que le nœud soit d'un type ["Statement"] mais a obtenu à la place "AssignmentExpression"

Mon projet react native a bien fonctionné hier. Mais ce matin, après avoir essayé de l'exécuter à nouveau, il m'a donné l'erreur suivante :

error node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js: Property body[41] of BlockStatement expected node to be of a type ["Statement"] but instead got "AssignmentExpression". Run CLI with --verbose flag for more details.
TypeError: Property body[41] of BlockStatement expected node to be of a type ["Statement"] but instead got "AssignmentExpression"

Je ne suis pas sûr de ce que cela signifie. Comment puis-je résoudre ce problème ?

19voto

Archimedes Trajano Points 2729

Il semble qu'il s'agisse d'un bogue avec la version 7.15.0 de Babel, qui fait l'objet d'une mise à jour. Test de régression E2E React native pour.

Réponse actualisée

Il y a quelques heures, ils ont publié la solution . Elle est due à une modification de la @babel/plugin-transform-react-display-name qui a été annulée en 7.15.1 . Avec cette correction, vous devriez pouvoir supprimer les entrées supplémentaires dans le package.json de ma réponse originale et faire à la place ce qui suit.

npm install --save-dev @babel/core@latest

Réponse originale

Malheureusement, le simple fait de rétrograder @babel/core à la version 7.14 ne sera pas suffisante car elle semble tirer les dernières dépendances pour les autres composants. Au lieu de cela, ce que vous devez faire est de verrouiller @babel/core et tout autre composant Babel sur lequel vous travaillez et qui contraint @babel/types pour passer à la version 7.15.0

Voici la section pertinente que j'avais dans mon package.json

"@babel/core": "~7.14.0",
"@babel/compat-data": "~7.14.0",
"@babel/generator": "~7.14.0",
"@babel/helper-compilation-targets": "~7.14.0",
"@babel/helper-create-class-features-plugin": "~7.14.0",
"@babel/helper-create-regexp-features-plugin": "~7.14.0",
"@babel/helper-member-expression-to-functions": "~7.14.0",
"@babel/helper-module-transforms": "~7.14.0",
"@babel/helper-replace-supers": "~7.14.0",
"@babel/plugin-transform-react-display-name": "~7.14.0",
"@babel/plugin-transform-runtime": "~7.14.0",
"@babel/types": "~7.14.0",

Il suffit de remplacer tout cela et d'effectuer une npm install et laissez-le essayer de résoudre et de tester à nouveau votre scénario. S'il échoue toujours, regardez dans le fichier package-lock.json et localisez 7.15.0 et ajuster la dépendance en conséquence

Avec cette approche, vous n'avez pas besoin de "récupérer" à partir d'un fichier zip.

12voto

Punreach Rany Points 370

Apparemment, il peut s'agir d'un problème avec le babel, copiez le dossier @babel (en particulier @babel/core ) qui se trouve dans les node_modules d'un projet qui fonctionne, dans le nouveau projet et il a fonctionné sans problème.

Cela peut être dû à une mise à jour effectuée il y a quelques heures.

vous pouvez également supprimer le @babel/core du package.json et installer cette version npm install --save-dev @babel/core@latest

Ou utilisez ceci @babel file : https://drive.google.com/file/d/1-z_4H_z4x075unZqZD41WYUwY_hsrKox/view

Ou remplacez les codes suivants dans votre package.json fichier alors npm install .

"@babel/core": "~7.14.0",
"@babel/compat-data": "~7.14.0",
"@babel/generator": "~7.14.0",
"@babel/helper-compilation-targets": "~7.14.0",
"@babel/helper-create-class-features-plugin": "~7.14.0",
"@babel/helper-create-regexp-features-plugin": "~7.14.0",
"@babel/helper-member-expression-to-functions": "~7.14.0",
"@babel/helper-module-transforms": "~7.14.0",
"@babel/helper-replace-supers": "~7.14.0",
"@babel/plugin-transform-react-display-name": "~7.14.0",
"@babel/plugin-transform-runtime": "~7.14.0",
"@babel/types": "~7.14.0",

2voto

Le problème est dû à une mise à jour de babel qui a affecté le projet RN. copier @babel d'un autre projet et le coller dans node_modules ou Téléchargez le dossier @babel à partir d'ici et remplacez le dossier existant dans node_modules. Télécharger Babel

Et courir

npm start --reset-cache

2voto

J'ai rencontré ce problème lorsque j'ai changé de branche git et que j'ai eu besoin de faire une installation yarn. J'aime bien le commentaire sur le changement de version de bable puisque je suis aussi en 7.15 et j'essaierai la prochaine fois que cela se produira...

Pour contourner ce problème, j'ai réussi :

  1. Arrêt du métro
  2. a exécuté un script de nettoyage (inclus ci-dessous)
  3. supprimer/désinstaller l'application de l'appareil/du simulateur
  4. a démarré le métro
  5. application installée
  6. Parfois, j'obtiens toujours l'erreur et je refais 1-5 et cela fonctionne.

mon nettoyage script

#!/bin/bash

echo "clean'n android"
cd ./android && ./gradlew clean
cd ..

rm -rf ./node_modules
yarn cache clean
rm ./yarn.lock

rm -rf $TMPDIR/react-*
rm -rf $TMPDIR/metro-builder-cache-*

yarn install

1voto

Illuminator Points 446

Épingle @babel/plugin-transform-react-display-name a 7.14.5 .

Vous pouvez le faire en ajoutant ceci à votre package.json si votre gestionnaire de paquets supporte resolutions .

  "resolutions": {
    "@babel/plugin-transform-react-display-name": "7.14.5"
  }

Remerciements facebook/react-native#31960

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X