[英]Heroku: Cannot find module 'mongodb'
好的,我有一个Express应用程序,当部署到Heroku时会在启动时抛出此错误。 该应用程序可以在本地编译并正常运行:
Cannot find module 'mongodb'
这个应用程序一直运行到我昨天重新部署为止...这是我的package.json,它没有发生变化
{
"name": "fitness-tracker",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"express": "~4.9.0",
"body-parser": "~1.8.1",
"cookie-parser": "~1.3.3",
"promise": "~6.0.1",
"morgan": "~1.3.0",
"serve-favicon": "~2.1.3",
"debug": "~2.0.0",
"mongodb-core": "*",
"mongoskin": "~2.0.0",
"express-handlebars": "~1.1.0",
"moment": "~2.0.0",
"moment-timezone": "^0.3.1",
"q": "~1.0.1",
"compass": "~0.1.0",
"apm": "*"
},
"devDependencies": {
"moment-timezone": "^0.3.1"
}
有想法吗?
因此,问题在于基于节点版本的程序包解析。 由于NodeJS迅速发展,因此在package.json
包含engines
规范是一个很好的实践。
在各种云提供商上进行自动部署时,这可以帮助他们仅使用指定的节点和npm版本。 这是所有获取的软件包都是针对该节点版本构建的,因此减少了应用程序异常的机会。
同样总是值得一试:禁用Heroku构建缓存以重新创建node_modules
目录。
在Heroku CLI中编写:
$ heroku config:set NODE_MODULES_CACHE=false
$ git commit -am 'disable node_modules cache' --allow-empty
$ git push heroku master
如上所述这里 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.