Reactjs react native start提供无效的正则表达式无效错误
我按照以下链接开始使用react native 我试图创建没有expo的本地应用程序 因此,我根据文档遵循以下命令Reactjs react native start提供无效的正则表达式无效错误,reactjs,react-native,react-native-android,react-native-cli,metro-bundler,Reactjs,React Native,React Native Android,React Native Cli,Metro Bundler,我按照以下链接开始使用react native 我试图创建没有expo的本地应用程序 因此,我根据文档遵循以下命令 npm install -g react-native-cli react-native init AwesomeProject 运行android命令后 react-native run-android 它在模拟器上给了我以下错误 所以我使用start命令来运行metro服务器 react-native start 这个命令在控制台中给了我另一个错误 关闭命令提示符和m
npm install -g react-native-cli
react-native init AwesomeProject
运行android命令后
react-native run-android
它在模拟器上给了我以下错误
所以我使用start命令来运行metro服务器
react-native start
这个命令在控制台中给了我另一个错误
关闭命令提示符和metro bundler,然后再做一次它的Nodejs兼容性问题
我卸载了我的Node(12.11)并安装了Node(10)稳定版本,它工作得非常好。我通过以下步骤解决了这个问题:
react native init myApp--版本0.60.0
react native start
希望能有所帮助是的,我也面临着这个问题。实际上,建议大多数用户使用的Node.js版本是10.16.3 LTS。 使用以下choco命令将安装最新版本的12.11.0。 choco安装-y nodejs.install python2 jdk8
我将节点版本从12.11.0降级到10.16.3 LTS,它对我有效。有人问了一个类似的问题,可能这个解决方案对你有效,因为我应用了,当你使用choco命令安装NodeJS(choco install-y NodeJS.install python2 jdk8)时,它有效,它将安装最新版本的node,在编写此答案时为12.12.0。您必须将其降级到10.16.3,然后运行react native run android命令,它应该可以正常工作使用某些NPM和节点版本的Metro存在问题 你有两种选择:
- 备选方案1:卸载节点和npm,并使用其他(兼容)版本重新安装:
- 备选方案2:转到npde_modules文件夹中的文件:
并更改此代码:\node_modules\metro config\src\defaults\blacklist.js
var sharedBlacklist=[
/节点单元模块[/\\]反应[/\\]距离[/\\]./,,
/网站\/node\u模块\/.*/,
/heapCapture\/bundle\.js/,
/.*\/\uuuuu测试\ uu\/*/
];
为此:
var sharedBlacklist=[
/节点单元模块[\/\\]反应[\/\\]距离[\/\\]./,,
/网站\/node\u模块\/.*/,
/heapCapture\/bundle\.js/,
/.*\/\uuuuu测试\ uu\/*/
];
请注意,如果运行npm安装
或warn安装
,则需要再次更改代码
是的,只要切换到节点版本10就可以了
nvm install <version>
nvm use <version>
nvm安装
nvm使用
它起作用了……) 解决方案是更改模块
metro config
文件中的blacklist.js
文件,如上所述。但是每次运行npm/warn install
时,您都必须再次更改它
因此,我提出了一个解决方案,可以节省您每次查看文件并更改文件的时间:
我使用了一个使用JavaScript编辑文件的库:
node\u模块
文件夹相同级别的文件,根据示例将其命名为:metro fix.js
npm install
时,只需运行:请参阅文档。这是因为节点版本更高
12.x
降级到10.x
,或者卸载12.x并安装10.xnvm安装10.18.1 64
然后nvm安装12.14.1 64
列出已安装的所有版本nvm列表
当您想从一个版本切换到另一个版本时,请使用命令
nvm use 10.18.1 OR nvm use 12.14.1
我不知道它是否有效,但请尝试关闭hermes并尝试一次。嗨,Shekhar,欢迎来到Stack Overflow,感谢您的贡献。由于您是SO新手,以下是关于如何编写更好答案的一些提示:(1)假设用户没有使用节点v10。你可以发表评论要求澄清。(2) 您还假设此人正在使用
nvm
。提出问题的人可能不知道问题是什么,这可能会增加他们的困惑。
//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);
}
node metro-fix.js
nvm use 10.18.1 OR nvm use 12.14.1