可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I followed following link to get started with react-native
Getting started with react native
I tried to create native app without expo
so i as per documentation i followed following command
npm install -g react-native-cli
react-native init AwesomeProject
After run android command
react-native run-android
It gave me following error on emulator
So i used start command to run metro server
react-native start
This command gave me another error in console
回答1:
There are a problem with Metro using some NPM and Node versions.
You hay 2 alternatives:
- Alternative 1: Uninstall node and npm and reinstall with another versions.
- Alternative 2: Hot to file
\node_modules\metro-config\src\defaults\blacklist.js
and change this code:
var sharedBlacklist = [
/node_modules[/\\]react[/\\]dist[/\\].*/,
/website\/node_modules\/.*/,
/heapCapture\/bundle\.js/,
/.*\/__tests__\/.*/
];
to this:
var sharedBlacklist = [
/node_modules[\/\\]react[\/\\]dist[\/\\].*/,
/website\/node_modules\/.*/,
/heapCapture\/bundle\.js/,
/.*\/__tests__\/.*/
];
Please note that if you run an npm install or a yarn install you need to change the code again.
回答2:
Its compatibility issue of Nodejs
I uninstalled my Node(12.11) and installed Node(10) stable version and it worked perfectly.
回答3:
A similar question was asked here may be this solution might work for you cause i applied and it worked
回答4:
When you install the NodeJS using the choco command(choco install -y nodejs.install python2 jdk8), it will install the latest version of node which is 12.12.0 at the time of writing this answer. You have to downgrade it to 10.16.3 and run the react-native run-android command and it should work fine
回答5:
yeah, just shift to Node version 10 and it will work.
nvm install <version>
nvm use <version>
it works...... :)
回答6:
The solution is to change the blacklist.js
file in module metro-config
files as answered above. But each time you run npm/yarn install
you will have to change it again.
So I came up with a solution that will save you time form going to the file and changing it each time:
I used a library that edit files using JavaScript:
- Install Replace-in-file module:
npm install --save replace-in-file
Create a file at the same level as node_module
folder name it: metro-fix.js
per example.
Copy paste this script in it:
//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);
}
- Now each time you run
npm install
just run:
node metro-fix.js
See Replace-in-file docs.
回答7:
close Commands prompt and metro bundler,do it again
回答8:
I solved this issue with this step :
- Uninstall node v12 and install node v8.9.4
- re-install react-native-cli
- re-create project
react-native init myApp --version 0.60.0
react-native start
Hope it helps
回答9:
yes i am also facing this issues. actually Node.js Recommended For Most Users is version 10.16.3 LTS.
Using below choco command will install Latest version of 12.11.0.
choco install -y nodejs.install python2 jdk8
I downgrade Node version from 12.11.0 to 10.16.3 LTS and it worked for me.
回答10:
It is because of the node version is higher.
One of the solutions is that you can easily downgrade the node version from 12.x
to 10.x
or uninstall 12.x and install 10.x
On the other hand what if you want to use 12.x for some other project.
So the below solution makes it easier. You can nvm which can control the multiple versions of node.
So first install nvm from here https://github.com/coreybutler/nvm-windows/releases
Once installed remember to add the nvm path to system variable
then nvm install 10.18.1 64
then nvm install 12.14.1 64
to list all the versions installed nvm list
whenever you want to switch from one version to another version use the command
nvm use 10.18.1 OR nvm use 12.14.1