由于项目中依赖了一个第三方包,安装时会触发 node-pre-gyp 的下载,然后在这里就是漫长的等待,等待的结果还是报错,让人抓狂!
现象及原因
目前如果项目中依赖了 fabric.js 这个库,npm install 的时候会卡主,具体现象如下
> canvas@2.6.0 install /var/lib/jenkins/workspace/All_Service_Dependency/release_candidate/frontend/node_modules/canvas
> node-pre-gyp install --fallback-to-build
node-pre-gyp WARN Using request for node-pre-gyp https download
原因:fabric.js 会依赖 node-canvas 库(因为 fabric.js 支持在服务端渲染,虽然目前没有这个场景),这个包比较特殊,会从 github 下载 c++ 编译包,从而导致卡主
解决办法
通过修改环境变量的方式使得下载从走国内的镜像,具体解决办法在 .npmrc(用户目录下) 中添加如下内容
canvas_binary_host_mirror=https://npm.taobao.org/mirrors/node-canvas-prebuilt/
再次 install,整个世界都美好了!
总结
多注意 https://npm.taobao.org/mirrors 这个淘宝源。可以用来解决一些常见的问题,比如常见的 node-sass、node-sqlite3 安装问题,举例如下
sass_binary_site=https://npm.taobao.org/mirrors/node-sass/phantomjs_cdn
url=http://cnpmjs.org/downloads
electron_mirror=https://npm.taobao.org/mirrors/electron/
sqlite3_binary_host_mirror=https://foxgis.oss-cn-shanghai.aliyuncs.com/
profiler_binary_host_mirror=https://npm.taobao.org/mirrors/node-inspector/