Ich habe gerade node.js & cli installiert
- installierte node.js
installierte react-native-cli
npm -g react-native-cli
Und ein 'neues Projekt' erstellt.
react-native init new_project
und in diesem 'new_project'-Verzeichnis war ich müde zu sehen, ob der Metro Bundler gut funktioniert.
react-native start
Aber der Befehl gab mir folgenden Fehler und die U-Bahn startet nicht. Irgendwelche Hinweise zur Behebung dieses Fehlers? (Ich verwende Windows 10 OS.)
- Befehl :
C:\projects\new_proj>react-native start
Fehler Ungültiger regulärer Ausdruck: /(.\fixtures.|node_modules[‹react[‹dist[‹.|website\node_modules.|heapCapture\bundle.js|.\tests.)$/: Nicht terminierte Zeichenklasse. Führen Sie die CLI mit dem Flag --verbose aus, um weitere Informationen zu erhalten. SyntaxError: Ungültiger regulärer Ausdruck: / (. ) bei Blacklist (D: \ projects \ new_proj \ node_modules \ metro-config \ src \ defaults \ blacklist.js: 34: 10) bei getBlacklistRE (D: \ projects \ new_proj \ node_modules \ react-native \ node_modules @ react-native -community \ cli \ build \ tools \ loadMetroConfig.js: 69: 59) unter getDefaultConfig (D: \ projects \ new_proj \ knotenmodule \ react-native \ knotenmodule @ react-native-community \ cli \ build \ tools \ loadMetroConfig.js : 85: 20) unter Last (D:
- Befehl :
117
Run CLI with --verbose flag for more details.
Vielleicht haben Sie vergessen, einem Backslash zu entkommen. Siehe stackoverflow.com/questions/14639339/… . Kann nicht ohne weitere Details sagen.Antworten:
Ich habe heute zum ersten Mal einen ähnlichen Fehler erhalten. Es wird angezeigt
\node_modules\metro-config\src\defaults\blacklist.js
, dass ein ungültiger regulärer Ausdruck geändert werden muss. Ich habe den ersten Ausdruck unter geändertsharedBlacklist
von:zu:
quelle
Dies wird durch den Knoten v12.11.0 verursacht, da er den regulären Standort dort auf zwei Arten behandelt, um dieses Problem zu lösen
Methode I.
Sie können ein Downgrade auf den Knoten v12.10.0 durchführen. Dadurch wird der richtige Umgang mit Analysefehlern angewendet
Methode II
Sie können den regulären Ausdruck in Ihrem Fall korrekt beenden, indem Sie die folgende Datei ändern:
\node_modules\metro-config\src\defaults\blacklist.js
Von:
Zu:
quelle
metro-config
oderexpo-cli
?[Schnelle Antwort]
Es gibt ein Problem mit Metro bei der Verwendung einiger NPM- und Node-Versionen.
Sie können das Problem beheben, indem Sie Code in der Datei ändern
\node_modules\metro-config\src\defaults\blacklist.js
.Suchen Sie diese Variable:
und ändern Sie dies:
quelle
.\node_modules\metro-bundler\src\blacklist.js
Sie haben zwei Lösungen:
Entweder führen Sie ein Downgrade des Knotens auf V12.10.0 durch, oder Sie können diese Datei für jedes zu erstellende Projekt ändern.
node_modules / metro-config / src / defaults / blacklist.js Ändern Sie Folgendes :
dazu:
quelle
Ich hatte das gleiche Problem, das ich in meinem Projekt mit E: \ NodeJS \ ReactNativeApp \ ExpoTest \ node_modules \ metro-config \ src \ defaults \ blacklist.js geändert habe
von
zu
das hat bei mir perfekt funktioniert
quelle
Ein PR mit einem Fix wurde im Metro- Repository zusammengeführt. Jetzt müssen wir nur noch bis zur nächsten Veröffentlichung warten. Im Moment ist die beste Option ein Downgrade auf NodeJS
v12.10.0
. Wie Brandon betonte, ist esnode_modules/
eine wirklich schlechte Praxis , irgendetwas in is zu ändern, und es wird keine endgültige Lösung sein.quelle
Ich habe keine Metro-Konfiguration in meinem Projekt, was nun?
Ich habe festgestellt, dass es in einem ziemlich älteren Projekt kein
metro-config
In gibtnode_modules
. Wenn es bei Ihnen der Fall ist, dannUnd machen Sie den gleichen Schritt wie in anderen Antworten erwähnt, dh
Ersetzen
mit
PS Ich war in einigen Projekten mit der gleichen Situation konfrontiert, daher dachte ich, dass das Teilen jemandem helfen könnte.
Bearbeiten
Laut Kommentar von @beltrone könnte die Datei auch in vorhanden sein,
quelle
MyProject\node_modules\metro\src\blacklist.js
. Prost.Ich habe das gleiche Problem.
„Fehler Ungültiger regulärer Ausdruck:. / ( \ Armaturen . \ | node_modules [\] reagieren [\] dist [\]. | Website \ node_modules \. | heapCapture \ bundle.js |. \ Tests \. ) $ /: Unterminated Zeichenklasse. "
Ändern Sie den regulären Ausdruck in
\node_modules\metro-config\src\defaults\blacklist.js
Von
Zu
Diese Änderung hat meinen Fehler behoben.
quelle
https://github.com/facebook/metro/issues/453
Für diejenigen, die diesen Fehler immer noch ohne offiziellen Patch in React-Native, Expo erhalten
Verwenden Sie Garn und fügen Sie diese Einstellung in package.json hinzu
quelle
Gehe zu
und ersetzen Sie diese
zu
quelle
Sie können gehen zu ...
\ node_modules \ metro-config \ src \ defaults \ blacklist.js und ändern ...
dafür:
quelle
In der Regel ändere ich keine Dateien innerhalb
node_modules/
(oder irgendetwas, das nicht als Teil eines Repositorys festgeschrieben wird), da sie beim nächsten Bereinigen, Erstellen oder Aktualisieren zurückgeführt werden. Ich habe es definitiv in der Vergangenheit getan und es hat mich ein paar Mal gebissen. Dies funktioniert jedoch als kurzfristiger / lokaler Entwickler-Fix, bis / sofern nichtmetro-config
aktualisiert wird.Vielen Dank!
quelle
Ich fand die regexp.source geändert von
node v12.11.0
, möglicherweise die neuev8
Engine verursacht. Weitere Informationen finden Sie unter https://github.com/nodejs/node/releases/tag/v12.11.0 .quelle
Beheben Sie das Problem, indem Sie metro-config der neuesten Version (vorerst 0.57.0) installieren. Sie hatten das Problem behoben:
npm install metro-config
Sie können es später entfernen, nachdem reaktionsnative Leute die Modulversionen aktualisiert haben
quelle
Die Verwendung von Garn verhindert diese Situation. Garn sollte verwenden
quelle
Unter Windows 10 empfehle ich dringend, Linux Bash Shell zu installieren.
Hier ist eine nette Anleitung zum Einrichten: https://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/
Befolgen Sie einfach die Schritte, wählen Sie Ihre Linux-Distribution aus und vermeiden Sie so viel Arbeit wie möglich mit Node on Cmd, da dies offensichtlich instabil ist.
Beachten Sie, dass Microsoft nachdrücklich davor warnt, Linux-Dateien mit Windows-Software hinzuzufügen oder zu ändern , wie hier beschrieben: howtogeek.com/261383/how-to-access-your-ubuntu-bash-files-in-windows-and-your-windows- System-Drive-In-Bash /
Ich hoffe es hilft!
quelle
Ich habe gerade package.json aktualisiert, um von zu ändern
zu
Es scheint, dass das Problem in SDK-36 nicht auftreten wird !!
Meine Knotenversion ist v12.16.0 und os ist win10 .
quelle
Die Lösung ist einfach, aber vorübergehend ...
Beachten Sie, dass Sie den Code erneut ändern müssen , wenn Sie ein
npm install
oder einyarn install
ausführen!Wie können wir das automatisch ausführen?
Permanente Lösung
Um dies "automatisch" nach der Installation Ihrer Knotenmodule zu tun, können Sie verwenden
patch-package
.metro-config
Korrigieren Sie die Datei und beheben Sie den Fehler:Die Datei wird in angezeigt
\node_modules\metro-config\src\defaults\blacklist.js
.Bearbeiten von:
Zu:
npx patch-package metro-config
package.json
Trigger der Patch:Alles erledigt! Jetzt wird dieser Patch bei jedem
npm install
/ erstelltyarn install
.Vielen Dank an https://github.com/ds300/patch-package
quelle