Heroku:找不到模块' mongodb'

时间:2016-05-10 16:15:29

标签: node.js mongodb express heroku

好的,我有一个快速应用程序,在部署到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"
     }

想法?

2 个答案:

答案 0 :(得分:1)

所以问题是基于节点版本的包的解析。由于NodeJS正在快速发展,因此在engines中包含package.json规范是一种很好的做法。

在各种云提供商上进行自动部署时,这有助于他们仅使用指定的节点和放大器。 npm版本。这就是所有获取的包都是为该节点版本构建的,因此应用程序错误行为的可能性更小。

了解详情:https://docs.npmjs.com/files/package.json#engines

答案 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