Acabei de instalar node.js e cli
- node.js instalado
instalado reac-nativo-cli
npm -g react-native-cli
E criou um 'novo projeto'.
react-native init new_project
e dentro desse diretório 'new_project', cansei de ver se o metro bundler funciona bem.
react-native start
Mas o comando me deu o seguinte erro e o metro não está iniciando. Alguma pista para corrigir esse erro? (Estou usando o sistema operacional Windows 10).
- comando:
C:\projects\new_proj>react-native start
erro Expressão regular inválida: /(.\fixtures.|node_modules[]react[]dist[].|website\node_modules.|heapCapture\bundle.js|.\tests.)$/: Classe de caractere não terminada. Execute a CLI com o sinalizador --verbose para obter mais detalhes. SyntaxError: Expressão regular inválida: /(.\fixtures.|node_modules[]react[]dist[].|website\node_modules.|heapCapture\bundle.js|.\tests.)$/: Classe de caractere sem terminação no novo RegExp ( ) na lista negra (D: \ projects \ new_proj \ node_modules \ metro-config \ src \ defaults \ blacklist.js: 34: 10) em getBlacklistRE (D: \ projects \ new_proj \ node_modules \ react-native \ node_modules @ react-native -community \ cli \ build \ tools \ loadMetroConfig.js: 69: 59) em getDefaultConfig (D: \ projects \ new_proj \ node_modules \ react-native \ node_modules @ react-native-community \ cli \ build \ tools \ loadMetroConfig.js : 85: 20) na carga (D:
- comando:
117
Run CLI with --verbose flag for more details.
talvez você tenha esquecido de escapar de uma barra invertida. Consulte stackoverflow.com/questions/14639339/… . Não posso dizer sem mais detalhes.Respostas:
Acabei de receber um erro semelhante pela primeira vez hoje. Aparece em
\node_modules\metro-config\src\defaults\blacklist.js
, há uma expressão regular inválida que precisava ser alterada. Mudei a primeira expressão emsharedBlacklist
de:para:
fonte
Isso é causado pelo nó v12.11.0 devido à forma como ele trata a localização regular, há duas maneiras de resolver este problema
Método I
Você pode fazer o downgrade para o nó v12.10.0 que aplicará a maneira correta de lidar com o erro de análise
Método II
Você pode encerrar corretamente a expressão regular em seu caso, alterando o arquivo localizado a:
\node_modules\metro-config\src\defaults\blacklist.js
De:
Para:
fonte
metro-config
ouexpo-cli
?[Resposta rápida]
Há um problema com o Metro ao usar algumas versões de NPM e Node.
Você pode corrigir o problema alterando algum código no arquivo
\node_modules\metro-config\src\defaults\blacklist.js
.Pesquise esta variável:
e mude para isto:
fonte
.\node_modules\metro-bundler\src\blacklist.js
Você tem duas soluções:
Você faz o downgrade do nó para V12.10.0 ou pode modificar este arquivo para cada projeto que criar.
node_modules / metro-config / src / defaults / blacklist.js Altere isso:
para isso:
fonte
Tive o mesmo problema, alterei E: \ NodeJS \ ReactNativeApp \ ExpoTest \ node_modules \ metro-config \ src \ defaults \ blacklist.js no meu projeto
de
para
Isso funcionou perfeitamente para mim
fonte
Um PR com uma correção foi mesclado no repositório metro . Agora só precisamos esperar até o próximo lançamento. Por enquanto, a melhor opção é fazer o downgrade para o NodeJS
v12.10.0
. Como Brandon apontou, modificar qualquer coisanode_modules/
é uma prática muito ruim e não será a solução final.fonte
Não tenho metro-config no meu projeto, e agora?
Eu descobri que no projeto muito mais velho não existe
metro-config
nonode_modules
. Se for o seu caso, então,E faça a mesma etapa mencionada em outras respostas, ou seja,
Substituir
com
PS Eu enfrentei a mesma situação em alguns projetos, então pensei que compartilhar isso poderia ajudar alguém.
Editar
De acordo com o comentário de @beltrone, o arquivo também pode existir em,
fonte
MyProject\node_modules\metro\src\blacklist.js
. Felicidades.Eu tenho o mesmo problema.
"erro Expressão regular inválida: / (. \ fixtures \. | node_modules [\] react [\] dist [\]. | website \ node_modules \. | heapCapture \ bundle.js |. \ tests \. ) $ /: Não terminado classe de personagem. "
Altere a expressão regular em
\node_modules\metro-config\src\defaults\blacklist.js
De
Para
Essa mudança resolveu meu erro.
fonte
https://github.com/facebook/metro/issues/453
para quem ainda recebe este erro sem patch oficial no react-native, expo
use yarn e adicione esta configuração em package.json
fonte
Vamos para
e substitua isso
para
fonte
Você pode ir para...
\ node_modules \ metro-config \ src \ defaults \ blacklist.js e mudança ...
por esta:
fonte
Como regra geral, eu não modifico os arquivos dentro
node_modules/
(ou qualquer coisa que não seja confirmada como parte de um repositório), pois a próxima limpeza, construção ou atualização irá regredi-los. Eu definitivamente já fiz isso no passado e isso me mordeu algumas vezes. Mas isso funciona como uma correção de desenvolvimento local / de curto prazo até / a menos quemetro-config
seja atualizado.Obrigado!
fonte
Descobri que regexp.source mudou de
node v12.11.0
, talvez o novov8
mecanismo tenha causado. veja mais em https://github.com/nodejs/node/releases/tag/v12.11.0 .fonte
Corrija isso instalando o metro-config da versão mais recente (0.57.0 por enquanto). Eles corrigiram o problema:
npm install metro-config
você pode removê-lo mais tarde, após atualizar as versões do módulo de atualização
fonte
O uso de fio evita essa situação. Fios devem usar
fonte
No Windows 10, eu recomendo fortemente instalar o Linux Bash Shell.
Aqui está um bom guia para configurá-lo: https://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/
basta seguir os passos, escolher sua distribuição linux e evitar o máximo possível trabalhar com node no cmd devido à óbvia instabilidade.
Leve em consideração que a Microsoft alerta fortemente contra adicionar ou modificar arquivos Linux com software Windows, conforme descrito aqui: howtogeek.com/261383/how-to-access-your-ubuntu-bash-files-in-windows-and-your-windows- system-drive-in-bash /
Espero que ajude!
fonte
Acabei de atualizar o package.json para mudar de
para
Parece que o problema não ocorrerá no sdk-36 !!
Minha versão do nó é v12.16.0 e os é win10 .
fonte
A solução é simples, mas temporária ...
Observe que se você executar um
npm install
ou um,yarn install
precisará alterar o código novamente!Então, como podemos executar isso automaticamente?
Solução permanente
Para fazer isso "automagicamente" após instalar seus módulos de nó, você pode usar
patch-package
.metro-config
arquivo, resolvendo o erro:O arquivo aparece em
\node_modules\metro-config\src\defaults\blacklist.js
.Editar de:
Para:
npx patch-package metro-config
package.json
gatilho, o patch:Tudo feito! Agora este patch será feito em cada
npm install
/yarn install
.Graças a https://github.com/ds300/patch-package
fonte