我刚刚安装了node.js和cli
- 安装的node.js
安装了react-native-cli
npm -g react-native-cli
并创建了一个“新项目”。
react-native init new_project
在“ new_project”目录中,我很疲倦地查看Metro bundler是否运行良好。
react-native start
但是该命令给了我以下错误,并且Metro无法启动。有任何解决此错误的线索吗?(我正在使用Windows 10 OS。)
- 命令:
C:\projects\new_proj>react-native start
错误无效的正则表达式:/(.\fixtures.|node_modules[]react[]dist[].|website\node_modules.|heapCapture\bundle.js|.\tests。)$/:未终止的字符类。使用--verbose标志运行CLI以获取更多详细信息。SyntaxError:无效的正则表达式:/(..fixtures.|node_modules[]react[]dist[].|website\node_modules.|heapCapture\bundle.js|.\tests.)$/:新RegExp( )在getBlacklistRE的黑名单(D:\ projects \ new_proj \ node_modules \ metro-config \ src \ defaults \ blacklist.js:34:10)(D:\ projects \ new_proj \ node_modules \ react-native \ node_modules @ react-native getDefaultConfig上的-community \ cli \ build \ tools \ loadMetroConfig.js:69:59)(D:\ projects \ new_proj \ node_modules \ react-native \ node_modules @ react-native-community \ cli \ build \ tools \ loadMetroConfig.js :85:20)在负载(D:
- 命令:
如何解决“反应本机启动”上的错误
在Windows 10上,我强烈建议安装Linux Bash Shell。
这是一个很好的设置指南:https : //www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/
只需按照以下步骤操作,选择Linux发行版,并避免在cmd上使用节点,因为明显的不稳定。
考虑到Microsoft强烈警告不要使用Windows软件添加或修改Linux文件,如下所述: howtogeek.com/261383/how-to-access-your-ubuntu-bash-files-in-windows-and-your-windows-猛击系统驱动器/
希望能帮助到你!
通过安装最新版本(目前为0.57.0)的metro-config进行修复,他们已解决了该问题:
npm安装Metro-config
您可以稍后在本机人员更新模块版本后将其删除
转到项目目录中的node_modules,查找metro-config \ src \ defaults \ blacklist.js并将其更改var blacklist: = {....}
为
var sharedBlacklist = [
/node_modules[\/\\]react[\/\\]dist[\/\\].*/,
/website\/node_modules\/.*/,
/heapCapture\/bundle\.js/,
/.*\/__tests__\/.*/
];
你可以去...
\ 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__\/.*/
];
通常,我不修改其中的文件node_modules/
(或任何未提交为存储库一部分的文件),因为下一次清理,构建或更新将使它们退化。我过去肯定是这样做的,这使我难过几次。但这确实是一个短期/本地开发修复,直到/除非 metro-config
更新。
谢谢!
https://github.com/facebook/metro/issues/453
对于谁仍然在react-native,expo中没有官方补丁的情况下仍然收到此错误
使用yarn并将此设置添加到package.json
{
...
"resolutions": {
"metro-config": "bluelovers/metro-config-hotfix-0.56.x"
},
...
去
\ 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__\/.*/
];
这不是最佳实践,我的建议是:将节点版本降级为12.9或更新Metro-config,因为它们已解决了节点问题。
您有两种解决方案:
您可以将节点降级到V12.10.0,也可以为要创建的每个项目修改此文件。
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__\/.*/
];
这是由节点v12.11.0引起的,原因是它处理常规位置的方式有两种方法可以解决此问题
方法一
您可以降级到节点v12.10.0,这将应用正确的方法来处理解析错误
方法二
您可以通过更改以下位置的文件来正确终止正则表达式:
\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__\/.*/
];
我遇到了同样的问题,我在项目中更改了E:\ NodeJS \ ReactNativeApp \ ExpoTest \ 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__\/.*/
];
这对我来说很完美
我今天才第一次遇到类似的错误。它出现在中\node_modules\metro-config\src\defaults\blacklist.js
,其中有一个需要更改的无效正则表达式。我更改了以下的第一个表达式sharedBlacklist
:
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和Node版本的Metro出现问题。
您可以解决更改文件中某些代码的问题\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安装或yarn安装,则需要再次更改代码。
使用纱线可以防止这种情况。纱线应使用