由于Node.js官网访问不稳定,有时出现无法访问或需要用到科学上网方法的情况。会导致npm模块编译失败的情况。

解决原理:
node-gyp 在 rebuild 组件时需要用到node.js源代码相关头文件信息,若nodejs.org无法访问,则源码下载失败或超时,从而导致rebuild不能正常执行。
因此,可以通过手动下载nodejs源码或全局翻墙解决此问题。本文以下载源码为例进行讲解。

解决方法:

  1. 检查node.js的版本号 node -v
  2. 登录Node.js官网 下载对应版本的源代码
  3. 解压到node-gyp的临时目录
  4. 重命名文件夹,node-vx.xx -> x.xx (只保留版本号)
  5. 标致为已安装状态

Windows

node-gyp 临时目录(若无则手动创建)
C:\Users\XXX\ .node-gyp

Mac OS

node-gyp 临时目录(若无则手动创建)
/Users/xxx/.node-gyp

进入解压后的文件夹,创建一个空文件,命名为installVersion
输入文本9,回车换行,保存。

这时再次执行,npm install 命令并可以正常编译组件。
若仍然无法安装,可通过查看详细日志找出问题根源。
npm install --loglevel verbose

PS.
长城高墙越发高大,使用npm下载安装组件时经常遇到编译无响应、超时报错等问题。
大多由于github仓库、nodejs源码访问超时所致。
上述之举实属无奈。