Better

Ethan的博客,欢迎访问交流

让人讨厌的 node-pre-gyp

由于项目中依赖了一个第三方包,安装时会触发 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/


留言