在进行React Native时,需要执行如下命令:
react-native init AwesomeProject
但是按下Enter命令后,光标就一直在那转圈。
很明显,被墙了,国内开发者常见的问题。
在初始化的过程中,node-gyp需要进行编译,node-gyp 编译时候需要 NodeJs 源码来提供头文件,所以它会先尝试下载 NodeJs 源码,而在天朝墙外 CDN 经常抽风,有时候下载 NodeJs 源码奇慢无比,那么自然要卡很久。
所以解决方法就是,先把 NodeJs源码下载到本地,然后提取给 node-gyp。
方法是执行如下脚本:
命令:bash node-gyp.sh
node-gyp.sh的内容如下:
# js 版本号
NODE_VERSION=`node -v | cut -d'v' -f 2`
echo ${NODE_VERSION}
# 下载源码包(使用镜像)
wget http://npm.taobao.org/mirrors/node/v$NODE_VERSION/node-v$NODE_VERSION.tar.gz
# 删除现有内容不完整的目录
rm -rf ~/.node-gyp
mkdir ~/.node-gyp
# 解压缩并重命名到正确格式
tar zxf node-v$NODE_VERSION.tar.gz -C ~/.node-gyp
mv ~/.node-gyp/node-v$NODE_VERSION ~/.node-gyp/$NODE_VERSION
# 创建一个标记文件
printf "9\n">~/.node-gyp/$NODE_VERSION/installVersion
执行该命令要首先安装了node,至于如何安装node,可自行搜索。
由于笔者是mac环境,自带的命令中没有上述脚本中的wget命令,但是可以用homebrew去安装wget
brew install wget
当然homebrew也需要去安装,可自行搜索安装。
另外,我们还要再做一个配置:替换npm镜像。
npm官方的源不稳定,我们可以使用国内淘宝的源http://registry.npm.taobao.org/
执行下面的命令即可:
npm config set registry=http://registry.npm.taobao.org/
配置这些之后,再去初始化项目,即可看到效果。笔者亲测,大概2分钟创建项目完毕。