好的,我有一个快速应用程序,在部署到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"
}
想法?
答案 0 :(得分:1)
所以问题是基于节点版本的包的解析。由于NodeJS正在快速发展,因此在engines
中包含package.json
规范是一种很好的做法。
在各种云提供商上进行自动部署时,这有助于他们仅使用指定的节点和放大器。 npm版本。这就是所有获取的包都是为该节点版本构建的,因此应用程序错误行为的可能性更小。
答案 1 :(得分:0)
同样值得一试:禁用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
如上所述here。