web-dev-qa-db-fra.com

Comment résoudre l'erreur sur «démarrage natif réactif»

  1. Je viens d'installer node.js & cli

    • node.js installé
    • installé react-native-cli

      npm -g react-native-cli
      
  2. Et créé un "nouveau projet".

    react-native init new_project
    
  3. et dans ce répertoire 'new_project', je suis fatigué de voir si le bundler metro fonctionne bien.

    react-native start
    
  4. Mais la commande m'a donné l'erreur suivante et metro ne démarre pas. Un indice pour corriger cette erreur? (J'utilise Windows 10 OS.)

    • commande: C:\projects\new_proj>react-native start

      erreur Expression régulière non valide: /(.\fixtures.|node_modules} diplomatiqueréponse____________________________________________________________________________________ site Web .node_modules.|heapCapture\bundle.js|.\tests.)$/: classe de caractères non terminée. Exécutez CLI avec l'indicateur --verbose pour plus de détails. SyntaxError: Expression rationnelle non valide: /(.\fixtures.|node_modules} diplomereactoramaddistribution diplomatique .|website\node_modules.|heapCapture\bundle.js |. ) sur liste noire (D:\projects\new_proj\node_modules\metro-config\src\defaults\blacklist.js: 34: 10) sur getBlacklistRE (D:\projects\new_proj\node_modules\react-native\node_modules @ react-native -community\cli\build\tools\loadMetroConfig.js: 69: 59) sur getDefaultConfig (D:\projects\new_proj\node_modules\react-native\node_modules @ react-native-community\cli\build\tools\loadMetroConfig.js : 85: 20) à la charge (D:\projects\new_proj\node_modules\react-native\node_modules @ react-native-community\cli\build\tools\loadMetroConfig.js: 121: 25) at Object.runServer [as func ] (D:\projects\new_proj\node_modules\react-native\node_modules @ react-native-community\cli\build\commands\server\runServer.js: 82: 58) sur Command.handleAction (D:\projects\new_proj\node_modules\react-native\node_modules @ react-native-community\cli\build\cliEntry.js: 160: 21) sur Command.listener (D:\projects\new_proj\node_modules\commander\index.js: 315: 8) sur Command.emit (events.js: 210: 5) sur Command.parseArgs (D:\projects\new_proj\node_modules\commander\index.js: 651: 12)

99
Song Kevin

Je viens de recevoir une erreur similaire pour la première fois aujourd'hui. Il apparaît dans \node_modules\metro-config\src\defaults\blacklist.js, une expression régulière non valide doit être modifiée. J'ai changé la première expression sous sharedBlacklist de:

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

à:

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];
215
Clem

Cela est dû au nœud v12.11.0 en raison de la façon dont il traite l'emplacement normal de deux façons pour résoudre ce problème

Méthode I

Vous pouvez rétrograder vers le nœud v12.10.0, cela appliquera la bonne façon de traiter l'erreur d'analyse

Méthode II

Vous pouvez terminer correctement l'expression régulière dans votre cas en modifiant le fichier situé a:

\node_modules\metro-config\src\defaults\blacklist.js

De:

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

À:

 var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];
86
Charles

[Réponse rapide]

Il y a un problème avec Metro utilisant certains NPM et les versions Node.

Vous pouvez résoudre le problème de modification de code dans le fichier \node_modules\metro-config\src\defaults\blacklist.js.

Recherchez cette variable:

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

et passez à ceci:

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

Veuillez noter que si vous exécutez une installation npm ou une installation de fil, vous devez à nouveau modifier le code.

17
Javier C.

Vous avez deux solutions:

soit vous rétrogradez le nœud vers la version V12.10.0, soit vous pouvez modifier ce fichier pour chaque projet que vous créerez.

node_modules/metro-config/src/defaults/blacklist.js Modifiez ceci:

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

pour ça:

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];
12
Hasan Zahran

J'ai eu le même problème que j'ai modifié le E:\NodeJS\ReactNativeApp\ExpoTest\node_modules\metro-config\src\defaults\blacklist.js dans mon projet

de

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website\/node_modules\/.*/,
 /heapCapture\/bundle\.js/,
 /.*\/__tests__\/.*/
];

à

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

cela a parfaitement fonctionné pour moi

8

Un PR avec un correctif a été fusionné dans le référentiel metro . Il ne nous reste plus qu'à attendre la prochaine version. Pour l'instant, la meilleure option est de rétrograder vers NodeJS v12.10.0. Comme Brandon l'a souligné, en modifiant quoi que ce soit dans node_modules/ est une très mauvaise pratique et ne sera pas une solution définitive.

3
JoseLion

Aller à

\ node_modules\metro-config\src\defaults\blacklist.js

et remplacez ceci

var sharedBlacklist = [
/node_modules[/\\]react[/\\]dist[/\\].*/,
/website\/node_modules\/.*/,
/heapCapture\/bundle\.js/,
/.*\/__tests__\/.*/
];

à

var sharedBlacklist = [
/node_modules[\/\\]react[\/\\]dist[\/\\].*/,
/website\/node_modules\/.*/,
/heapCapture\/bundle\.js/,
/.*\/__tests__\/.*/
];

Ce n'est pas une bonne pratique et ma recommandation est la suivante: rétrograder la version du nœud en 12.9 OR mettre à jour metro-config car ils corrigent le problème Node.

1
Lahiru Amarathunge

https://github.com/facebook/metro/issues/45

pour qui obtient toujours cette erreur sans patch officiel dans react-native, expo

utilisez du fil et ajoutez ce paramètre dans package.json

{
  ...
  "resolutions": {
    "metro-config": "bluelovers/metro-config-hotfix-0.56.x"
  },
 ...
1
bluelovers

Corrigez-le en installant metro-config de la dernière version (0.57.0 pour l'instant), ils avaient résolu le problème:

npm installe metro-config

vous pouvez le supprimer plus tard, après la mise à jour des versions du module de gars natifs

0
KEMBL

En règle générale, je ne modifie pas les fichiers dans node_modules/ (ou tout ce qui n'est pas validé dans le cadre d'un référentiel) car le prochain nettoyage, build ou mise à jour les régressera. Je l'ai définitivement fait dans le passé et cela m'a mordu plusieurs fois. Mais cela fonctionne comme un correctif de développement local/à court terme jusqu'à/à moins que metro-config Est mis à jour.

Merci!

0
Brandon Gohsman

Sur Windows 10, je recommande fortement d'installer Linux Bash Shell.

Voici un joli guide pour le configurer: https://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-Shell-on-windows-10/

suivez simplement les étapes, choisissez votre distribution linux et évitez autant que possible de travailler avec node sur cmd depuis une instabilité évidente.

Prenez en considération Microsoft met fortement en garde contre l'ajout ou la modification de fichiers Linux avec un logiciel Windows, comme décrit ici: howtogeek.com/261383/how-to-access-your-ubuntu-bash-files-in-windows-and- votre-système-windows-drive-in-bash /

J'espère que ça aide!

0
Avatazjoe

J'ai trouvé la regexp.source modifiée de node v12.11.0, peut-être le nouveau v8 moteur provoqué. voir plus sur https://github.com/nodejs/node/releases/tag/v12.11. .

D:\code\react-native>nvm use 12.10.0
Now using node v12.10.0 (64-bit)

D:\code\react-native>node
Welcome to Node.js v12.10.0.
Type ".help" for more information.
> /node_modules[/\\]react[/\\]dist[/\\].*/.source
'node_modules[\\/\\\\]react[\\/\\\\]dist[\\/\\\\].*'
> /node_modules[/\\]react[/\\]dist[/\\].*/.source.replace(/\//g, path.sep)
'node_modules[\\\\\\\\]react[\\\\\\\\]dist[\\\\\\\\].*'
>
(To exit, press ^C again or ^D or type .exit)
>

D:\code\react-native>nvm use 12.11.0
Now using node v12.11.0 (64-bit)

D:\code\react-native>node
Welcome to Node.js v12.11.0.
Type ".help" for more information.
> /node_modules[/\\]react[/\\]dist[/\\].*/.source
'node_modules[/\\\\]react[/\\\\]dist[/\\\\].*'
> /node_modules[/\\]react[/\\]dist[/\\].*/.source.replace(/\//g, path.sep)
'node_modules[\\\\\\]react[\\\\\\]dist[\\\\\\].*'
>
(To exit, press ^C again or ^D or type .exit)
>

D:\code\react-native>nvm use 12.13.0
Now using node v12.13.0 (64-bit)

D:\code\react-native>node
Welcome to Node.js v12.13.0.
Type ".help" for more information.
> /node_modules[/\\]react[/\\]dist[/\\].*/.source
'node_modules[/\\\\]react[/\\\\]dist[/\\\\].*'
> /node_modules[/\\]react[/\\]dist[/\\].*/.source.replace(/\//g, path.sep)
'node_modules[\\\\\\]react[\\\\\\]dist[\\\\\\].*'
>
(To exit, press ^C again or ^D or type .exit)
>

D:\code\react-native>nvm use 13.3.0
Now using node v13.3.0 (64-bit)

D:\code\react-native>node
Welcome to Node.js v13.3.0.
Type ".help" for more information.
> /node_modules[/\\]react[/\\]dist[/\\].*/.source
'node_modules[/\\\\]react[/\\\\]dist[/\\\\].*'
> /node_modules[/\\]react[/\\]dist[/\\].*/.source.replace(/\//g, path.sep)
'node_modules[\\\\\\]react[\\\\\\]dist[\\\\\\].*'
>
0
Donghua Liu

Accédez à node_modules dans votre répertoire de projet, recherchez metro-config\src\defaults\blacklist.js et modifiez le var blacklist: = {....} à

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];
0
NC Armstrong

Tu peux aller à...

\ node_modules\metro-config\src\defaults\blacklist.js et changez ...

var sharedBlacklist = [   /node_modules[/\\]react[/\\]dist[/\\].*/,  
/website\/node_modules\/.*/,   /heapCapture\/bundle\.js/,  
/.*\/__tests__\/.*/ ];

pour ça:

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];
0

L'utilisation de fil empêche cette situation. Le fil doit utiliser

0
Gucal

Je viens de mettre à jour package.json pour passer de

"react-native": "https://github.com/expo/react-native/archive/sdk-35.0.0.tar.gz"

à

"react-native": "https://github.com/expo/react-native/archive/sdk-36.0.0.tar.gz"

Il semble que le problème ne se produira pas dans sdk-36 !!

La version de mon nœud est v12.16. et os est win1.

0
anson