Właśnie zainstalowałem node.js i cli
- zainstalowany node.js
Zainstalowany respond-native-cli
npm -g react-native-cli
I stworzył „nowy projekt”.
react-native init new_project
a wewnątrz tego katalogu „new_project” zmęczono mnie, aby sprawdzić, czy pakiet oprogramowania Metro działa dobrze.
react-native start
Ale komenda dała mi następujący błąd i metro się nie uruchamia. Jakaś wskazówka, jak naprawić ten błąd? (Używam systemu operacyjnego Windows 10).
- Komenda :
C:\projects\new_proj>react-native start
error Invalid regular expression: /(.\fixtures.|node_modules[]react[]dist[].|website\node_modules.|heapCapture\bundle.js|.\tests.)$/: Unterminated character class. Aby uzyskać więcej informacji, uruchom CLI z flagą --verbose. SyntaxError: Invalid regular expression: /(.\fixtures.|node_modules[]react[]dist[].|website\node_modules.|heapCapture\bundle.js|.\tests.)$/: Nieskończona klasa postaci w nowym RegExp ( ) na czarnej liście (D: \ projects \ new_proj \ node_modules \ metro-config \ src \ defaults \ blacklist.js: 34:10) w getBlacklistRE (D: \ projects \ new_proj \ node_modules \ respons-native \ node_modules @active-native -community \ cli \ build \ tools \ loadMetroConfig.js: 69: 59) w getDefaultConfig (D: \ projects \ new_proj \ node_modules \ respons-native \ node_modules @ respons-native-community \ cli \ build \ tools \ loadMetroConfig.js : 85:20) przy obciążeniu (D:
- Komenda :
117
Run CLI with --verbose flag for more details.
Być może zapomniałeś uciec przed ukośnikiem. Zobacz stackoverflow.com/questions/14639339/… . Nie mogę powiedzieć bez więcej szczegółów.Odpowiedzi:
Właśnie dzisiaj po raz pierwszy wystąpił podobny błąd. Pojawia się w
\node_modules\metro-config\src\defaults\blacklist.js
, istnieje nieprawidłowe wyrażenie regularne, które wymagało zmiany. Zmieniłem pierwsze wyrażenie podsharedBlacklist
z:do:
źródło
Jest to spowodowane przez węzeł w wersji 12.11.0 ze względu na sposób, w jaki obsługuje on regularne lokalizacje na dwa sposoby rozwiązania tego problemu
Metoda I
Możesz przejść na starszą wersję węzła 12.10.0, co spowoduje poprawny sposób radzenia sobie z błędem przetwarzania
Metoda II
W twoim przypadku możesz poprawnie zakończyć wyrażenie regularne, zmieniając plik znajdujący się a:
\node_modules\metro-config\src\defaults\blacklist.js
Z:
Do:
źródło
metro-config
lubexpo-cli
?[Szybka odpowiedź]
Wystąpił problem z Metro podczas korzystania z niektórych wersji NPM i Node.
Możesz rozwiązać problem, zmieniając kod w pliku
\node_modules\metro-config\src\defaults\blacklist.js
.Wyszukaj tę zmienną:
i zmień na to:
źródło
.\node_modules\metro-bundler\src\blacklist.js
Masz dwa rozwiązania:
albo obniżysz węzeł do wersji 12.10.0, albo możesz zmodyfikować ten plik dla każdego projektu, który utworzysz.
node_modules / metro-config / src / defaults / blacklist.js Zmień to:
do tego:
źródło
Miałem ten sam problem, który zmieniłem E: \ NodeJS \ ReactNativeApp \ ExpoTest \ node_modules \ metro-config \ src \ defaults \ blacklist.js w moim projekcie
z
do
to działało idealnie dla mnie
źródło
W repozytorium Metro został scalony PR z poprawką . Teraz musimy tylko poczekać do następnego wydania. Na razie najlepszą opcją jest przejście na NodeJS . Jak zauważył Brandon , modyfikowanie czegokolwiek jest naprawdę złą praktyką i nie będzie ostatecznym rozwiązaniem.
v12.10.0
node_modules/
źródło
Nie mam programu Metro-config w swoim projekcie, co teraz?
I odkryli, że w całkiem starszego projektu tam nie ma
metro-config
wnode_modules
. Jeśli tak jest w Twoim przypadku,I wykonaj ten sam krok, jak wspomniano w innych odpowiedziach, tj
Zastąpić
z
PS Miałem tę samą sytuację w kilku projektach, więc myślenie, że podzielenie się tym może komuś pomóc.
Edytować
Zgodnie z komentarzem @beltrone plik może również istnieć w,
źródło
MyProject\node_modules\metro\src\blacklist.js
. Twoje zdrowie.Mam ten sam problem.
"błąd Nieprawidłowe wyrażenie regularne: / (. \ fixtures \. | node_modules [\] respond [\] dist [\]. | website \ node_modules \. | heapCapture \ bundle.js |. \ tests \. ) $ /: Niezakończony klasa postaci ”.
Zmień wyrażenie regularne w
\node_modules\metro-config\src\defaults\blacklist.js
Z
Do
Ta zmiana rozwiązała mój błąd.
źródło
https://github.com/facebook/metro/issues/453
dla tych, którzy nadal otrzymują ten błąd bez oficjalnej łatki w native, expo
użyj przędzy i dodaj to ustawienie do pliku package.json
źródło
Iść do
i wymień to
do
źródło
Możesz iść do...
\ node_modules \ metro-config \ src \ defaults \ blacklist.js i zmień ...
dla tego:
źródło
Zasadniczo nie modyfikuję plików w obrębie
node_modules/
(ani niczego, co nie zostanie zatwierdzone jako część repozytorium), ponieważ następne czyszczenie, kompilacja lub aktualizacja spowoduje ich regres. Zdecydowanie robiłem to w przeszłości i ugryzło mnie to kilka razy. Ale to działa jako krótkoterminowa / lokalna poprawka deweloperska do / chyba żemetro-config
zostanie zaktualizowana.Dzięki!
źródło
Znalazłem zmienione źródło regexp.source
node v12.11.0
, być możev8
spowodował to nowy silnik. zobacz więcej na https://github.com/nodejs/node/releases/tag/v12.11.0 .źródło
Napraw to, instalując metro-config najnowszej wersji (na razie 0.57.0), naprawili problem:
npm zainstaluj metro-config
możesz go później usunąć, po tym jak reaktywni goście zaktualizują wersje modułów
źródło
Użycie przędzy zapobiega takiej sytuacji. Przędza powinna używać
źródło
W systemie Windows 10 bardzo polecam zainstalowanie powłoki Linux Bash Shell.
Oto fajny przewodnik, jak to skonfigurować: https://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/
po prostu postępuj zgodnie z instrukcjami, wybierz dystrybucję Linuksa i unikaj jak największej ilości pracy z node na cmd, ponieważ jest to oczywista niestabilność.
Weź pod uwagę Microsoft zdecydowanie ostrzega przed dodawaniem lub modyfikowaniem plików Linuksa za pomocą oprogramowania Windows, jak opisano tutaj: howtogeek.com/261383/how-to-access-your-ubuntu-bash-files-in-windows-and-your-windows- system-drive-in-bash /
Mam nadzieję, że to pomoże!
źródło
Właśnie zaktualizowałem package.json do zmiany
do
Wygląda na to, że problem nie wystąpi w sdk-36 !!
Wersja mojego węzła to 12.16.0, a system operacyjny to win10 .
źródło
Rozwiązanie jest proste, ale tymczasowe ...
Zauważ, że jeśli uruchomić
npm install
lubyarn install
, musisz ponownie zmienić kod!Jak więc możemy to uruchomić automatycznie?
Stałe rozwiązanie
Aby zrobić to „automagicznie” po zainstalowaniu modułów węzłów, możesz użyć
patch-package
.metro-config
plik, rozwiązując błąd:Plik pojawi się w formacie
\node_modules\metro-config\src\defaults\blacklist.js
.Edytuj od:
Do:
npx patch-package metro-config
package.json
wyzwalaczu patch:Gotowe! Teraz ta poprawka zostanie wprowadzona na każdym
npm install
/yarn install
.Dzięki https://github.com/ds300/patch-package
źródło