ExpressJS部署到Heroku执行git push heroku master出现bcrypt报错如何解决?
解决方案
- 首先排除node_modules误提交问题
检查项目根目录是否存在.gitignore文件,无则新建,写入node_modules/规则。执行以下命令清除git中已缓存的node_modules文件:
提交变更后再进行后续部署操作。git rm -r --cached node_modules - 补充package.json的缺失配置
在package.json中添加engines字段指定Node.js与npm版本,与你本地开发环境版本保持一致即可,示例配置如下:
同时修改"engines": { "node": "14.x", "npm": "6.x" }scripts下的start配置,生产环境无需使用nodemon,改为:
注意匹配入口文件的大小写,避免启动时找不到文件报错。"start": "node server.js" - 替换存在编译依赖的bcrypt库
bcrypt需要原生编译,在服务器环境容易出现权限、依赖缺失问题,可以替换为纯JS实现的bcryptjs,两者API完全兼容无需修改业务逻辑:- 卸载原有bcrypt:
npm uninstall bcrypt - 安装bcryptjs:
npm install bcryptjs - 代码中所有
require('bcrypt')的引入语句替换为require('bcryptjs')
- 卸载原有bcrypt:
- 清除Heroku构建缓存后重新部署
执行以下命令清除历史构建缓存避免旧依赖干扰:
完成上述所有操作后重新执行heroku builds:cache:purge -a 替换为你的Heroku应用名称git push heroku master即可。
内容的提问来源于stack exchange,提问作者melek hedhili
相关产品推荐
相关产品推荐

