Saya baru saja menginstal node.js & cli
- node.js diinstal
menginstal react-native-cli
npm -g react-native-cli
Dan membuat 'proyek baru'.
react-native init new_project
dan di dalam direktori 'new_project' itu, saya lelah melihat apakah metro bundler berfungsi dengan baik.
react-native start
Tetapi perintah memberi saya kesalahan berikut dan metro tidak dimulai. Ada petunjuk untuk memperbaiki kesalahan ini? (Saya menggunakan Windows 10 OS.)
- perintah:
C:\projects\new_proj>react-native start
kesalahan Ekspresi reguler tidak valid: /(.\fixtures.i>node_modules[]react[]dist[].]website\node_modules. ThursheapCapture\bundle.jsi>.\tests.)$/: Kelas karakter tak terhentikan. Jalankan CLI dengan --verbose flag untuk lebih jelasnya. SyntaxError: Ekspresi reguler tidak valid: /(.\fixtures. incrednode_modules[]react[]dist[].]website\node_modules. ThursheapCapture\bundle.jsi>.\tests.)$/: Kelas karakter tak terhentikan di RegExp baru ( ) di daftar hitam (D: \ projects \ new_proj \ node_modules \ metro-config \ src \ defaults \ blacklist.js: 34: 10) di getBlacklistRE (D: \ projects \ new_proj \ node_modules \ react-native \ node_modules @ react-native -community \ cli \ build \ tools \ loadMetroConfig.js: 69: 59) di getDefaultConfig (D: \ projects \ new_proj \ node_modules \ react-native \ node_modules @ react-native-community \ cli \ build \ tools \ loadMetroConfig.js : 85: 20) saat memuat (D:
- perintah:
117
Run CLI with --verbose flag for more details.
Mungkin Anda lupa melarikan diri dari garis miring terbalik. Lihat stackoverflow.com/questions/14639339/… . Tidak bisa mengatakan tanpa detail lebih lanjut.Jawaban:
Saya baru saja mendapat kesalahan serupa untuk pertama kalinya hari ini. Tampak di
\node_modules\metro-config\src\defaults\blacklist.js
, ada ekspresi reguler tidak valid yang perlu diubah. Saya mengubah ekspresi pertama di bawahsharedBlacklist
dari:untuk:
sumber
Hal ini disebabkan oleh node v12.11.0 karena cara menangani lokasi biasa ada dua cara untuk mengatasi masalah ini
Metode I
Anda dapat menurunkan versi ke node v12.10.0 ini akan menerapkan cara yang benar untuk menangani kesalahan penguraian
Metode II
Anda dapat dengan benar menghentikan ekspresi reguler dalam kasus Anda dengan mengubah file yang terletak di:
\node_modules\metro-config\src\defaults\blacklist.js
Dari:
Untuk:
sumber
metro-config
atauexpo-cli
?[Jawaban cepat]
Ada masalah dengan Metro menggunakan beberapa versi NPM dan Node.
Anda dapat memperbaiki masalah dengan mengubah beberapa kode di file
\node_modules\metro-config\src\defaults\blacklist.js
.Cari variabel ini:
dan ubah menjadi ini:
sumber
.\node_modules\metro-bundler\src\blacklist.js
Anda memiliki dua solusi:
baik Anda menurunkan versi node ke V12.10.0 atau Anda dapat memodifikasi file ini untuk setiap proyek yang akan Anda buat.
node_modules / metro-config / src / defaults / blacklist.js Ubah ini:
untuk ini:
sumber
Saya memiliki masalah yang sama dengan saya mengubah E: \ NodeJS \ ReactNativeApp \ ExpoTest \ node_modules \ metro-config \ src \ defaults \ blacklist.js di proyek saya
dari
untuk
ini bekerja dengan sempurna untuk saya
sumber
Sebuah PR dengan memperbaiki telah bergabung di metro repositori. Sekarang kita tinggal menunggu sampai rilis berikutnya. Untuk saat ini, opsi terbaik adalah menurunkan versi ke NodeJS
v12.10.0
. Seperti yang ditunjukkan Brandon , memodifikasi apa pun dalamnode_modules/
isa praktik yang sangat buruk dan tidak akan menjadi solusi akhir.sumber
Saya tidak memiliki metro-config dalam proyek saya, sekarang bagaimana?
Saya telah menemukan bahwa dalam proyek yang cukup lama tidak ada kata
metro-config
masuknode_modules
. Jika demikian halnya dengan Anda, maka,Dan lakukan langkah yang sama seperti yang disebutkan dalam jawaban lain, yaitu
Menggantikan
dengan
PS Saya menghadapi situasi yang sama dalam beberapa proyek jadi berpikir berbagi itu mungkin membantu seseorang.
Edit
Sesuai komentar oleh @beltrone, file tersebut mungkin juga ada di,
sumber
MyProject\node_modules\metro\src\blacklist.js
. Bersulang.Saya punya masalah yang sama.
"kesalahan Ekspresi reguler tidak valid: / (. \ fixture \. | node_modules [\] react [\] dist [\]. | website \ node_modules \. | heapCapture \ bundle.js |. \ tes \. ) $ /: Tidak dihentikan kelas karakter. "
Ubah ekspresi reguler dalam
\node_modules\metro-config\src\defaults\blacklist.js
Dari
Untuk
Perubahan ini menyelesaikan kesalahan saya.
sumber
https://github.com/facebook/metro/issues/453
bagi yang masih mendapatkan kesalahan ini tanpa patch resmi di react-native, expo
gunakan benang dan tambahkan pengaturan ini ke package.json
sumber
Pergi ke
dan ganti ini
untuk
sumber
Anda dapat pergi ke ...
\ node_modules \ metro-config \ src \ defaults \ blacklist.js dan ubah ...
untuk ini:
sumber
Sebagai aturan umum, saya tidak mengubah file di dalam
node_modules/
(atau apa pun yang tidak dikomit sebagai bagian dari repositori) karena pembersihan, pembuatan, atau pembaruan berikutnya akan menurunkannya. Saya pasti pernah melakukannya di masa lalu dan itu telah menggigit saya beberapa kali. Tetapi ini berfungsi sebagai perbaikan pengembang jangka pendek / lokal sampai / kecualimetro-config
diperbarui.Terima kasih!
sumber
Saya menemukan regexp.source diubah dari
node v12.11.0
, mungkinv8
disebabkan oleh mesin baru . lihat lebih lanjut di https://github.com/nodejs/node/releases/tag/v12.11.0 .sumber
Perbaiki dengan menginstal metro-config dari versi terbaru (0.57.0 untuk saat ini) mereka telah memperbaiki masalah:
npm instal metro-config
Anda dapat menghapusnya nanti, setelah react-native guys memperbarui versi modul
sumber
Penggunaan benang mencegah situasi ini. Benang harus digunakan
sumber
Di windows 10 saya sangat merekomendasikan untuk menginstal Linux Bash Shell.
Berikut adalah panduan yang bagus untuk mengaturnya: https://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/
cukup ikuti langkah-langkahnya, pilih distribusi linux Anda dan hindari sebanyak mungkin bekerja dengan node pada cmd karena ketidakstabilan yang jelas.
Pertimbangkan Microsoft sangat memperingatkan agar tidak menambahkan atau memodifikasi file Linux dengan perangkat lunak Windows, seperti yang dijelaskan di sini: howtogeek.com/261383/how-to-access-your-ubuntu-bash-files-in-windows-and-your-windows- system-drive-in-bash /
Semoga membantu!
sumber
Saya baru saja memperbarui package.json untuk mengubah dari
untuk
Tampaknya masalah tidak akan terjadi di sdk-36 !!
Versi node saya adalah v12.16.0 dan os adalah win10 .
sumber
Solusinya sederhana, tapi sementara ...
Perhatikan bahwa jika Anda menjalankan
npm install
atauyarn install
Anda perlu mengubah kode lagi!Jadi, bagaimana kita bisa menjalankannya secara otomatis?
Solusi permanen
Untuk melakukan ini "secara otomatis" setelah menginstal modul node Anda, Anda dapat menggunakan
patch-package
.metro-config
file, selesaikan kesalahan:File muncul di
\node_modules\metro-config\src\defaults\blacklist.js
.Edit dari:
Untuk:
npx patch-package metro-config
package.json
pemicu Anda , tambalan:Semua selesai! Sekarang tambalan ini akan dibuat di setiap
npm install
/yarn install
.Terima kasih untuk https://github.com/ds300/patch-package
sumber