react-native 开始给出 Invalid 正则表达式无效错误
Posted
技术标签:
【中文标题】react-native 开始给出 Invalid 正则表达式无效错误【英文标题】:react-native start giving Invalid regular expression invalid error 【发布时间】:2020-01-26 18:23:51 【问题描述】:我按照以下链接开始使用 react-native
Getting started with react native
我尝试在没有博览会的情况下创建本机应用程序 所以我按照文档我遵循以下命令
npm install -g react-native-cli
react-native init AwesomeProject
运行android命令后
react-native run-android
它在模拟器上给了我以下错误
所以我用启动命令来运行metro server
react-native start
此命令在控制台中给了我另一个错误
【问题讨论】:
不知道有没有用但是试试关掉hermes试试看。facebook.github.io/react-native/docs/hermes 【参考方案1】:Metro 使用某些 NPM 和 Node 版本时存在问题。
你有两种选择:
备选方案 1: 卸载 node 和 npm 并使用另一个(兼容)版本重新安装: https://nodejs.org/en/download备选方案 2: 转到 npde_modules 文件夹中的文件:
\node_modules\metro-config\src\defaults\blacklist.js
并更改此代码:
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__\/.*/
];
请注意,如果您运行
npm install
或yarn install
,则需要再次更改代码。
【讨论】:
【参考方案2】:Nodejs的兼容性问题 我卸载了我的 Node(12.11) 并安装了 Node(10) 稳定版,它运行良好。
【讨论】:
【参考方案3】:解决方案是更改模块metro-config
文件中的blacklist.js
文件,如上所述。但是每次运行npm/yarn install
时,您都必须再次更改它。
所以我想出了一个解决方案,可以节省您每次访问文件并更改文件的时间:
我使用了一个使用 javascript 编辑文件的库:
-
安装文件替换模块:
npm install --save replace-in-file
在与node_module
文件夹相同级别创建一个文件,将其命名为:metro-fix.js
,例如。
复制粘贴此脚本:
//Load the library
const replace = require('replace-in-file');
// path for metro config file
const path = 'node_modules/metro-config/src/defaults/blacklist.js';
// creating options for editing the file
const options = [
files: path,
from: 'modules[/',
to: 'modules[\\/',
,
files: path,
from: 'react[/',
to: 'react[\\/',
,
files: path,
from: 'dist[/',
to: 'dist[\\/',
,
];
try
let results;
// looping on each option
options.forEach(e =>
results = replace.sync(e);
console.log('Replacing "'+e.from+'" by "'+e.to+'" results:', results[0].hasChanged);
);
catch (error)
console.error('Error occurred:', error);
-
现在每次运行
npm install
时只需运行:
node metro-fix.js
请参阅Replace-in-file docs。
【讨论】:
【参考方案4】:here 有人问了一个类似的问题,可能是这个解决方案可能对你有用,因为我申请了它并且它有效
【讨论】:
【参考方案5】:当您使用 choco 命令(choco install -y nodejs.install python2 jdk8)安装 NodeJS 时,它将安装最新版本的节点,在撰写本文时为 12.12.0回答。您必须将其降级到 10.16.3 并运行 react-native run-android 命令,它应该可以正常工作
【讨论】:
【参考方案6】:是的,只需切换到 Node 版本 10 即可。
nvm install <version>
nvm use <version>
它工作...... :)
【讨论】:
嗨 Shekhar,欢迎来到 Stack Overflow,感谢您的贡献。由于您是 SO 新手,因此这里有一些关于如何编写更好答案的提示: (1) 您假设用户没有使用 node v10。您可以发表评论要求澄清。 (2) 您还假设此人正在使用nvm
。问这个问题的人可能不知道它是什么,这可能会增加他们的困惑。【参考方案7】:
关闭命令提示符和地铁捆绑器,再做一次
【讨论】:
【参考方案8】:我通过这一步解决了这个问题:
-
卸载节点 v12 并安装节点 v8.9.4
重新安装 react-native-cli
重新创建项目
react-native init myApp --version 0.60.0
react-native start
希望对你有帮助
【讨论】:
【参考方案9】:是的,我也面临这个问题。实际上 Node.js 推荐给大多数用户的是 10.16.3 LTS 版本。 使用以下 choco 命令将安装最新版本的 12.11.0。 choco install -y nodejs.install python2 jdk8
我将 Node 版本从 12.11.0 降级到 10.16.3 LTS,它对我有用。
【讨论】:
【参考方案10】:是因为node版本比较高。
其中一种解决方案是您可以轻松地将节点版本从12.x
降级到10.x
或卸载12.x 并安装10.x
另一方面,如果您想将 12.x 用于其他项目,该怎么办。 所以下面的解决方案使它更容易。你可以通过nvm来控制node的多个版本。
所以首先从这里安装 nvm https://github.com/coreybutler/nvm-windows/releases
安装后记得将 nvm 路径添加到系统变量
然后nvm install 10.18.1 64
然后nvm install 12.14.1 64
列出所有安装的版本nvm list
当你想从一个版本切换到另一个版本时,使用命令
nvm use 10.18.1 OR nvm use 12.14.1
【讨论】:
以上是关于react-native 开始给出 Invalid 正则表达式无效错误的主要内容,如果未能解决你的问题,请参考以下文章
尽管 OpenGL 上下文有效,glGenTextures 仍给出 GL_INVALID_OPERATION
为啥这个程序会在 C 中给出 Invalid memory access 错误? [关闭]
在 Tomcat 上通过 IntelliJ 部署 SpringBoot(休息服务)战争给出 404
IntelliJ 在创建 Scala 项目后在 build.sbt 中给出“无法解析符号”的错误
invalid LOC header (bad signature)
Python keras:多标签值的 to_categorical 给出 ValueError: invalid literal for int() with base 10