我使用NodeJS后端和Mongo数据库创建了一个Ionic应用程序,并将其部署到Heroku(使用mLab MongoDB附加组件)。它运作良好一天。第二天我无法连接到数据库。应用程序在此期间进入睡眠状态,但当我在浏览器中打开它时,它就醒了。我知道,因为我看到了我放在索引页面上的静态文本。但几秒钟后,出现了一个错误页面。从控制台和网络选项卡输出,我可以发现应用程序无法访问数据库并获取数据。
我在互联网上发现了一个帖子,作者说他有同样的问题,并且他删除了Heroku上的数据库实例并创建了一个新实例。所以我做了同样的事情然后我能够再次正常启动我的应用程序。
今天同样的事情发生了 - 我无法连接。当我将代码中的DB URI切换到mongodb://localhost/mydbname
并在本地运行应用程序时,它运行正常,因此我得出结论,应用程序代码本身很好,只有连接到数据库的问题。如果我尝试在Heroku上定位数据库,它也不会在本地工作。
我以为我可能忘记了凭据,所以我去了Heroku仪表板并更改了用户名和密码。然后我尝试通过控制台与mongo ds<number>.mlab.com:<port>/heroku_<name> -u <username> -p <password>
连接。这是输出:
MongoDB shell version v3.6.3
connecting to: mongodb://ds213239.mlab.com:13239/heroku_d3xjtj3x
2018-03-16T16:09:18.215+0100 W NETWORK [thread1] Failed to connect to 54.236.230.76:13239 after 5000ms milliseconds, giving up.
2018-03-16T16:09:18.216+0100 E QUERY [thread1] Error: couldn't connect to server ds213239.mlab.com:13239, connection attempt failed :
connect@src/mongo/shell/mongo.js:251:13
@(connect):1:6
exception: connect failed
目前我使用托管和数据库附加组件的免费版本,因为我只想测试应用程序并将其显示给我的客户(谁将决定是否要支付Heroku服务)。如果我没有任何表现,如果每次都发生这种情况,那么,那就太糟糕了。
这是有趣的部分:我想再次尝试打开应用程序,以便我可以在此处复制并粘贴确切的错误消息。这次它正常工作! (???)我唯一做的就是我更改了用户名并传递了数据库仪表板,但我没有推送更新的代码,我也没有在MONGODB_URI配置变量中更改它。
有谁知道为什么会这样?有没有办法保持数据库清醒和可访问(无需额外付费)?
感谢。
编辑:它不会再次运作!!!在提交这篇文章后的30秒,我试图再次访问该应用程序,它没有工作!有一个错误页面说:
Error: Uncaught (in promise): [object Object]
at c (http://localhost:8100/build/polyfills.js:3:19752)
at c (http://localhost:8100/build/polyfills.js:3:19461)
at http://localhost:8100/build/polyfills.js:3:20233
at t.invokeTask (http://localhost:8100/build/polyfills.js:3:15660)
at Object.onInvokeTask (http://localhost:8100/build/vendor.js:4973:33)
at t.invokeTask (http://localhost:8100/build/polyfills.js:3:15581)
at r.runTask (http://localhost:8100/build/polyfills.js:3:10834)
at o (http://localhost:8100/build/polyfills.js:3:7894)
at e.invokeTask [as invoke] (http://localhost:8100/build/polyfills.js:3:16823)
at p (http://localhost:8100/build/polyfills.js:2:27648)
ONE MORE EDIT:我再次删除了数据库,创建了一个新数据库,更改了我的应用程序中的连接字符串并推送了更改。现在它正常工作。我明天会再次检查并更新这篇文章。
新编辑:一天后,应用再次无法连接到数据库。我再次得到相同的错误消息。
Wtf,Heroku ???