执行npm install bcrypt --save出现node-pre-gyp错误,如何解决?
解决bcrypt@2.0.0安装时预编译二进制包找不到的问题
我来帮你搞定这个bcrypt安装的坑!你遇到的问题是bcrypt@2.0.0的官方预编译二进制包没有适配你的Node.js v8.9.4(对应node-v57 ABI),所以node-pre-gyp自动 fallback 到源码编译,但一般来说Windows环境默认缺编译依赖,就会卡在这里。下面给你几个实用的解决办法:
方案1:升级bcrypt到兼容Node8的稳定版本
bcrypt@2.0.0版本比较老旧,后续版本已经补全了很多Node版本的预编译包支持。你可以直接安装支持Node.js v8.9.4的兼容稳定版,比如v5.0.1:
npm install bcrypt@5.0.1 --save
这个版本的预编译包覆盖范围更广,大概率能直接安装成功,不用折腾复杂的编译环境。
方案2:搭建源码编译环境(非要用v2.0.0的话)
如果你必须坚持使用bcrypt@2.0.0,那得先把Windows下的Node原生模块编译环境配置好:
- 用管理员权限打开命令提示符(CMD)或者PowerShell
- 安装Windows Build Tools,它会自动帮你装齐Python 2.7和Visual C++构建工具(这俩是Node原生模块编译的必需依赖):
npm install --global windows-build-tools
- 等安装完成后,重新执行你的安装命令:
npm install bcrypt@2.0.0 --save
方案3:改用纯JS实现的bcryptjs
要是不想折腾编译环境,完全可以用bcryptjs替代——它是bcrypt的纯JavaScript实现,API和bcrypt几乎完全一致,不需要任何编译步骤:
npm install bcryptjs --save
之后在代码里只需要把require('bcrypt')改成require('bcryptjs')就行,用法没有任何区别。
内容的提问来源于stack exchange,提问作者devRena
相关产品推荐
相关产品推荐

