react-native 开始给出 Invalid regular expression 无效错误
react-native start giving Invalid regular expression invalid error
我跟着 link 开始使用 react-native
Getting started with react native
我尝试在没有 expo 的情况下创建本机应用程序
所以我根据文档我遵循了以下命令
npm install -g react-native-cli
react-native init AwesomeProject
运行android命令后
react-native run-android
在模拟器上出现以下错误
所以我使用 运行 metro 服务器的启动命令
react-native start
此命令在控制台中出现另一个错误
关闭命令提示符和地铁捆绑器,再做一次
它的Nodejs兼容性问题
我卸载了我的 Node(12.11) 并安装了 Node(10) 稳定版,它运行良好。
我通过这一步解决了这个问题:
- 卸载节点 v12 并安装节点 v8.9.4
- 重新安装 react-native-cli
- 重新创建项目
react-native init myApp --version 0.60.0
react-native start
希望对您有所帮助
是的,我也面临着这个问题。实际上 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,它对我有用。
有人问了一个类似的问题here这个解决方案可能对你有用,因为我申请了并且有效
当你使用choco命令(choco install -y nodejs.install python2 jdk8)安装NodeJS时,它会安装最新版本的node在撰写此答案时为 12.12.0。你必须将它降级到 10.16.3 和 运行 react-native 运行-android命令,它应该可以正常工作
使用某些 NPM 和 Node 版本的 Metro 存在问题。
您有 2 个备选方案:
- 备选方案 1: 卸载节点和 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__\/.*/
];
Please note that if you run npm install
or yarn install
you'll need to change the code again.
是的,只需切换到 Node 版本 10 即可。
nvm install <version>
nvm use <version>
有效……:)
解决方案是按照上面的回答更改模块 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 文档。
因为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
我跟着 link 开始使用 react-native
Getting started with react native
我尝试在没有 expo 的情况下创建本机应用程序 所以我根据文档我遵循了以下命令
npm install -g react-native-cli
react-native init AwesomeProject
运行android命令后
react-native run-android
在模拟器上出现以下错误
所以我使用 运行 metro 服务器的启动命令
react-native start
此命令在控制台中出现另一个错误
关闭命令提示符和地铁捆绑器,再做一次
它的Nodejs兼容性问题 我卸载了我的 Node(12.11) 并安装了 Node(10) 稳定版,它运行良好。
我通过这一步解决了这个问题:
- 卸载节点 v12 并安装节点 v8.9.4
- 重新安装 react-native-cli
- 重新创建项目
react-native init myApp --version 0.60.0
react-native start
希望对您有所帮助
是的,我也面临着这个问题。实际上 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,它对我有用。
有人问了一个类似的问题here这个解决方案可能对你有用,因为我申请了并且有效
当你使用choco命令(choco install -y nodejs.install python2 jdk8)安装NodeJS时,它会安装最新版本的node在撰写此答案时为 12.12.0。你必须将它降级到 10.16.3 和 运行 react-native 运行-android命令,它应该可以正常工作
使用某些 NPM 和 Node 版本的 Metro 存在问题。
您有 2 个备选方案:
- 备选方案 1: 卸载节点和 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__\/.*/
];
Please note that if you run
npm install
oryarn install
you'll need to change the code again.
是的,只需切换到 Node 版本 10 即可。
nvm install <version>
nvm use <version>
有效……:)
解决方案是按照上面的回答更改模块 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 文档。
因为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