Heroku 应用程序在 MongoDB 更新到 3.0 后崩溃
Posted
技术标签:
【中文标题】Heroku 应用程序在 MongoDB 更新到 3.0 后崩溃【英文标题】:Heroku app crashes after MongoDB updated to 3.0 【发布时间】:2015-12-29 11:07:31 【问题描述】:今天,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 兼容,我们将不胜感激。
【问题讨论】:
npm install mongodb mongoose connect-mongo
?
我没有在这台电脑上设置开发环境。我得到的只是 git 环境,我可以推动它进行更改。
我的意思是在 heroku 服务器上运行这些。可能你只是更新 package.json 以使用最新的 mongodb 并推送到 heroku。可能是自动完成的,但我真的不知道。
如何在 Heroku 服务器上运行它们?或者更新我的 package.json 中的确切内容,我在任何地方都看不到那里提到的“驱动程序”。
heroku run ... 什么?或使用 git push heroku master 将更新的 package.json 推送到服务器?但我不是heroku专家。
【参考方案1】:
您使用的是 mongoose 3.8.19。 mongoose 的最新版本是 4.1.9。我会从那里开始:
$ npm install --save --save-exact mongoose@4.1.9
【讨论】:
我的网站现在已恢复正常运行。我没有做这件事。但我意识到猫鼬是“驱动程序”/库。支持团队一直在参考...并且我在我的 package.json 中将其版本更改为 4.1.9,在推送之后,该站点现在可以运行了。它似乎比平时慢了一点。但它有效。如果您想编辑您的答案,请在其中添加 package.json 更改。那我就可以接受了。感谢您的帮助!--save
标志会为您更改 package.json。
哦。不知道那个。接受答案:) 谢谢!【参考方案2】:
我遇到了完全相同的问题 我做了以上所有工作,但没有任何效果。直到我从我的 package.json 中删除了 mongoose 并重新安装它才起作用
【讨论】:
以上是关于Heroku 应用程序在 MongoDB 更新到 3.0 后崩溃的主要内容,如果未能解决你的问题,请参考以下文章
如何将带有 Mongodb 的 Next.js 应用程序部署到 Heroku?
使用 ObjectRocket 插件将带有 MongoDB 应用程序的 jHipster 部署到 Heroku