Windows环境npm install安装bcrypt触发MODULE_NOT_FOUND报错如何解决
Windows环境bcrypt安装连环缺模块报错解决方案
你现在碰到的补了A模块缺B模块、安装卡进度的问题,本质是三个问题叠加:删除node_modules时残留了不完整的依赖文件、npm本地缓存损坏、旧版安装指引里的windows-build-tools已经废弃不兼容新系统和Node版本,跟你package.json里的main字段没关系,不用在那反复改main字段浪费时间。
按下面的顺序操作,不要跳步:
1. 彻底清理损坏的残留文件
先在项目根目录打开终端,执行命令彻底删干净残留依赖和锁文件,别手动右键删,容易因为文件占用留碎文件:
rd /s /q node_modules del package-lock.json
执行完去项目目录确认node_modules文件夹完全消失后,再执行命令清掉全局损坏的npm缓存:
npm cache clean --force
2. 正确安装编译依赖,别再用卡进度的废弃包
官方旧指引里提到的npm install --global --production windows-build-tools已经停更3年以上,在你用的Win10 1903版本、Node 16.13.1环境下必然卡在28%进度无响应,完全不用等它。
正确的编译环境安装方式:
- 用管理员权限打开PowerShell,先装最新版的node-gyp编译工具:
npm install -g node-gyp@latest
- 打开Visual Studio Installer(没有就先下载社区版,完全免费),勾选「使用C++的桌面开发」组件,安装时默认附带的Windows 10 SDK不用取消,装完重启电脑即可。
3. 重新安装项目依赖
清理完环境之后直接在项目根目录执行全量安装:
npm install
如果还是单独卡bcrypt的安装步骤,就指定安装兼容Node 16的bcrypt版本:
npm install bcrypt@5.1.0 --save
兜底零编译方案
如果不想折腾C++编译环境,直接换纯JS实现的bcryptjs,和原生bcrypt的API100%兼容,不需要任何本地编译,不会出环境问题:
- 先卸载残留的原生bcrypt:
npm uninstall bcrypt --save
- 安装bcryptjs:
npm install bcryptjs --save
- 把代码里所有引用bcrypt的地方从
require('bcrypt')/import bcrypt from 'bcrypt'改成require('bcryptjs')/import bcrypt from 'bcryptjs'就行,所有加解密的方法调用、参数、返回值完全一致,不用改业务逻辑。
内容的提问来源于stack exchange,提问作者Alexander Obidiegwu
相关产品推荐
相关产品推荐

