由于国内访问Amazon S3比较慢,导致通过npm下载二进制文件依赖时会中断或者直接下不动,所以需要在npm命令后面加上--{module_name}_binary_host_mirror,其中module_name存在于package.json中。每个模块名称又不一样(例如:sqlite3的模块名为node_sqlite3)这时可以通过npm view sqlite3 binary或者指定版本npm view sqlite3@3.1.3 binary查询到模块名称而不需要去仓库查看打印结果如下:
$ npm view sqlite3@3.1.3 binary
{ module_name: 'node_sqlite3',
module_path: './lib/binding/{node_abi}-{platform}-{arch}',
host: 'https://mapbox-node-binary.s3.amazonaws.com',
remote_path: './{name}/v{version}/{toolset}/',
package_name: '{node_abi}-{platform}-{arch}.tar.gz' }
找到模块名称后组成--node_sqlite3_binary_host_mirror,再添加上淘宝 NPM 镜像组合成完整的命令npm install sqlite3 --node_sqlite3_binary_host_mirror=https://npm.taobao.org/mirrors。需要注意的是镜像地址的路径host、remote_path和package_name组合以后的地址是否正确。
如果在安装依赖时遇到node-gyp权限的问题可以加上--unsafe-perm配置
参考
