25

我按照以下链接开始使用 react-native

React Native 入门

我试图在没有博览会的情况下创建本机应用程序,所以我按照文档我遵循以下命令

npm install -g react-native-cli
react-native init AwesomeProject

运行android命令后

react-native run-android

它在模拟器上给了我以下错误

在此处输入图像描述

所以我使用启动命令来运行地铁服务器

react-native start

该命令在控制台中给了我另一个错误

在此处输入图像描述

4

10 回答 10

61

Metro 使用某些 NPM 和 Node 版本存在问题。

你有两种选择:


  • 备选方案 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您将需要再次更改代码。

于 2019-11-12T07:32:11.407 回答
17

它的 Nodejs 兼容性问题我卸载了我的 Node(12.11) 并安装了 Node(10) 稳定版本,它运行良好。

于 2019-09-26T18:07:02.960 回答
2

解决方案是按照上面的回答更改blacklist.js模块文件中的文件。metro-config但是每次运行时,npm/yarn install您都必须再次更改它。

所以我想出了一个解决方案,可以节省您每次访问文件并更改文件的时间:

我使用了一个使用 JavaScript 编辑文件的库:

  1. 安装文件替换模块:
npm install --save replace-in-file
  1. node_module在与文件夹名称相同的级别创建一个文件:metro-fix.js例如。

  2. 复制粘贴此脚本:

//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);
}
  1. 现在每次运行时npm install运行:
node metro-fix.js

请参阅替换文件文档。

于 2020-01-12T00:41:22.457 回答
1

一个类似的问题被问到这里可能是这个解决方案可能对你有用,因为我申请并且它有效

于 2019-10-11T11:00:05.813 回答
1

当您使用 choco 命令(choco install -y nodejs.install python2 jdk8)安装 NodeJS 时,它将安装最新版本的节点,在撰写此答案时为 12.12.0。您必须将其降级到 10.16.3 并运行 react-native run-android命令,它应该可以正常工作

于 2019-10-16T11:30:58.503 回答
1

是的,只要转移到 Node 版本 10 就可以了。

nvm install <version>
nvm use <version>

有用...... :)

于 2019-11-26T20:20:07.390 回答
0

这是因为节点版本更高。

  1. 解决方案之一是您可以轻松地将节点版本从 12.x 降级12.x10.x卸载 12.x 并安装 10.x

  2. 另一方面,如果您想将 12.x 用于其他项目怎么办。所以下面的解决方案使它更容易。您可以使用 nvm 来控制节点的多个版本。

所以首先从这里安装 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
于 2020-01-14T08:39:34.623 回答
0

关闭命令提示符和地铁捆绑器,再做一次

于 2019-09-26T13:16:19.450 回答
0

我通过这一步解决了这个问题:

  1. 卸载节点 v12 并安装节点 v8.9.4
  2. 重新安装 react-native-cli
  3. 重新创建项目react-native init myApp --version 0.60.0
  4. react-native start

希望能帮助到你

于 2019-09-27T09:44:05.897 回答
0

是的,我也面临这个问题。实际上 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,它对我有用。

于 2019-09-29T08:07:39.197 回答