我刚刚安装了 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
但是命令给了我以下错误并且地铁没有启动。修复此错误的任何线索?(我使用的是 Windows 10 操作系统。)
- 命令 :
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 ( ) 在黑名单 (D:\projects\new_proj\node_modules\metro-config\src\defaults\blacklist.js:34:10) 在 getBlacklistRE (D:\projects\new_proj\node_modules\react-native\node_modules@react-native -community\cli\build\tools\loadMetroConfig.js:69:59) 在 getDefaultConfig (D:\projects\new_proj\node_modules\react-native\node_modules@react-native-community\cli\build\tools\loadMetroConfig.js :85:20) 在负载 (D:
- 命令 :
如何解决'react-native start'的错误
IT技术
reactjs
react-native
react-native-android
react-native-cli
metro-bundler
2021-04-22 04:35:59
6个回答
我今天第一次遇到类似的错误。它出现在\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__\/.*/
];
这是由节点 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__\/.*/
];
这是由于不匹配的黑名单文件配置。
为了解决这个问题,
我们必须移动到项目文件夹。
打开
\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 和 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 install 或 yarn install,则需要再次更改代码。
您有两种解决方案:
您可以将节点降级到 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__\/.*/
];