Heroku 应用在 MongoDB 更新到 3.0 后崩溃。

5

MongoDB刚刚强制更新了我的Heroku服务器,从2.6版本升级到了3.0版本。

现在我的应用程序在启动后不久就崩溃并显示以下错误:

2015-10-01T10:22:27.405579+00:00 heroku[web.1]: State changed from crashed to starting
2015-10-01T10:22:42.457971+00:00 heroku[web.1]: Starting process with command `node server`
2015-10-01T10:22:46.278159+00:00 app[web.1]: memory, and will not scale past a single process.
2015-10-01T10:22:46.278136+00:00 app[web.1]: Warning: connect.session() MemoryStore is not
2015-10-01T10:22:46.278157+00:00 app[web.1]: designed for a production environment, as it will leak
2015-10-01T10:22:47.151118+00:00 app[web.1]: production server running at http://localhost:33827
2015-10-01T10:22:47.463775+00:00 heroku[web.1]: State changed from starting to up
2015-10-01T10:22:47.767430+00:00 app[web.1]: /app/node_modules/mongodb/lib/mongodb/connection/base.js:246
2015-10-01T10:22:47.767437+00:00 app[web.1]:         throw message;
2015-10-01T10:22:47.767439+00:00 app[web.1]:               ^
2015-10-01T10:22:47.767441+00:00 app[web.1]: MongoError: auth failed
2015-10-01T10:22:47.767443+00:00 app[web.1]:     at Object.toError (/app/node_modules/mongodb/lib/mongodb/utils.js:114:11)
2015-10-01T10:22:47.767444+00:00 app[web.1]:     at /app/node_modules/mongodb/lib/mongodb/db.js:1156:31
2015-10-01T10:22:47.767445+00:00 app[web.1]:     at /app/node_modules/mongodb/lib/mongodb/db.js:1890:9
2015-10-01T10:22:47.767447+00:00 app[web.1]:     at Server.Base._callHandler (/app/node_modules/mongodb/lib/mongodb/connection/base.js:448:41)
2015-10-01T10:22:47.767449+00:00 app[web.1]:     at /app/node_modules/mongodb/lib/mongodb/connection/server.js:481:18
2015-10-01T10:22:47.767450+00:00 app[web.1]:     at MongoReply.parseBody (/app/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js:68:5)
2015-10-01T10:22:47.767452+00:00 app[web.1]:     at null.<anonymous> (/app/node_modules/mongodb/lib/mongodb/connection/server.js:439:20)
2015-10-01T10:22:47.767453+00:00 app[web.1]:     at emit (events.js:107:17)
2015-10-01T10:22:47.767455+00:00 app[web.1]:     at null.<anonymous> (/app/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:201:13)
2015-10-01T10:22:47.767456+00:00 app[web.1]:     at emit (events.js:110:17)
2015-10-01T10:22:47.767458+00:00 app[web.1]:     at Socket.<anonymous> (/app/node_modules/mongodb/lib/mongodb/connection/connection.js:439:22)
2015-10-01T10:22:47.767459+00:00 app[web.1]:     at Socket.emit (events.js:107:17)
2015-10-01T10:22:47.767461+00:00 app[web.1]:     at readableAddChunk (_stream_readable.js:163:16)
2015-10-01T10:22:47.767462+00:00 app[web.1]:     at Socket.Readable.push (_stream_readable.js:126:10)
2015-10-01T10:22:47.767463+00:00 app[web.1]:     at TCP.onread (net.js:538:20)
2015-10-01T10:22:48.687613+00:00 heroku[web.1]: Process exited with status 1
2015-10-01T10:22:48.704259+00:00 heroku[web.1]: State changed from up to crashed

我查看了他们的状态页面,发现Mongo已经将服务器更新到3.0版本。更新应该是稳定的,所以我需要在我的端上也进行升级。经过进一步调查后,我发现我需要安装新的“驱动程序”以兼容版本3.0。我在这个链接中找到了详细信息:http://docs.mongodb.org/manual/release-notes/3.0-scram/#upgrade-drivers。但它没有描述如何在我的Heroku应用程序中更新驱动程序。我正在使用他们的沙盒服务器。我尝试联系他们的支持人员,但他们只给了我同样的链接。我还联系了Heroku的支持团队,但他们说:“您需要确保您正在使用的Mongo库支持Mongo的新版本3.0。这不一定是一个‘驱动程序’。”这对我也没有什么帮助。我的package.json内容如下。
{
  "name": "Stocks",
  "private": true,
  "version": "0.0.1",
  "main": "server.js",
  "engines": {
    "node": "0.12.x",
    "npm": "*"
  },
  "author": "Anom <anom@gmail.com",
  "dependencies": {
    "aws-sdk": "*",
    "body-parser": "^1.10.1",
    "connect": "^3.3.5",
    "connect-flash": "^0.1.1",
    "ejs": "^2.2.1",
    "express": "^4.11.0",
    "express-session": "^1.10.1",
    "forever": "*",
    "grunt": "^0.4.5",
    "grunt-cli": "^0.1.13",
    "grunt-contrib-jshint": "^0.11.2",
    "grunt-contrib-sass": "^0.9.2",
    "grunt-contrib-uglify": "^0.8.1",
    "grunt-contrib-watch": "^0.6.1",
    "grunt-express-server": "^0.5.1",
    "grunt-ssh": "^0.12.3",
    "gulp": "latest",
    "mongoose": "3.8.19",
    "multer": "^0.1.8",
    "node-sass": "^2.1.1",
    "nodemailer": "^1.3.4",
    "passport": "^0.2.1",
    "passport-local": "^1.0.0",
    "postmark": "^1.0.0",
    "request": "^2.55.0",
    "stripe": "^3.3.4"
  },
  "devDependencies": {},
  "scripts": {
    "start": "node server"
  }
}

任何帮助我弄清如何更新我的Heroku应用程序上的驱动程序以与新的3.0 MongoDB兼容的建议都将不胜感激。

1
npm install mongodb mongoose connect-mongo - YOU
我在这台电脑上没有设置开发环境。我只有git环境,可以通过推送进行更改。 - MLyck
1
我本意是在Heroku服务器上运行它们。也许你只需要更新package.json以使用最新的MongoDB并推送到Heroku。也许这是自动完成的,但我并不确定。 - YOU
1
我应该运行 heroku run ... 什么命令?还是使用 git push heroku master 将更新的 package.json 推送到服务器?但我不是 heroku 专家。 - YOU
似乎需要升级MongoDB - https://github.com/Automattic/mongoose/issues/3144 - YOU
显示剩余3条评论
2个回答

10

您正在使用mongoose 3.8.19。mongoose的最新版本是4.1.9。我建议您从那里开始:

$ npm install --save --save-exact mongoose@4.1.9

我现在已经把我的网站恢复并运行起来了。我没有做这个确切的事情。但是我意识到mongoose是“驱动程序”/库。支持团队一直在提到...然后我将它的版本更改为4.1.9在我的package.json中,推送之后,网站现在正常工作。它似乎比平常慢了一点。但它能运行。如果你想编辑你的答案,添加package.json的变化。那么我就可以接受它。谢谢帮助! - MLyck
2
--save 标志会为您更改 package.json。 - hunterloftis
哦,原来如此。接受了这个答案 :) 谢谢! - MLyck

1

我遇到了完全相同的问题。我尝试了以上所有方法,但都没有起作用。只有当我从我的package.json文件中删除了mongoose并重新安装它时,它才起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接