当我尝试在heroku中进行部署时遇到问题。有趣的是,这是三天前的工作。另外,在本地计算机上也可以正常工作。
Bcrypt的版本为3.0.0,节点为8.12.0
我真的需要部署此服务器。您能告诉我如何解决此错误吗?我尝试了一些找到的解决方案,但没有任何效果。我什至尝试卸载并再次安装Bcrypt,但无法正常工作。
感谢您的帮助。
这是日志。
mysql Ver 15.1 Distrib 10.1.36-MariaDB, for Linux (x86_64) using readline 5.1
答案 0 :(得分:5)
我也发生了同样的事情。
未在package.json中指定的节点版本
尝试执行heroku suggest,在package.json
上定义要使用的节点版本。
获取用于开发的版本:
node --version
然后将其放在package.json
上:
{ "name": "myapp",
"description": "a really cool app",
"version": "1.0.0",
"engines": {
"node": "8.9.4"
}
}
答案 1 :(得分:1)
好吧,我尝试了@GMachado的解决方案,但它对我不起作用。
我知道发生这种情况是因为bcrypt
需要本机编译器。我使用python
在本地计算机上编译bcrypt
,但是在heroku上进行部署时,我不愿意承受这种压力
作为一个快速解决方案,我unistalled bcrypt
然后installed bcryptjs
,bcryptjs
是bcrypt
的纯JavaScript版本。只需将其视为bcrypt
的简写即可。尽管bcrypt
要求本机编译器进行编译,但bcryptjs
则不需要。
bcrypt
比bcryptjs
快1.3倍。那就是主要区别。
首先通过键入以下命令来卸载bcrypt:
npm uninstall --save bcrypt
然后通过键入命令来安装bcryptjs
npm install --save bcryptjs
然后,导航到在应用程序上导入bcrypt的位置并将其更改为
require("bcryptjs")
应用程序的其余部分应保持不变。
回去部署在heroku上,就可以了。