txn*_*nxr 6 heroku mongoose mongodb mlab
所以我正在努力通过Manning的Getting Mean书并遵循第5章中的步骤我试图在Mongolab上使用db作为Heroku的附加组件.当我运行此代码(本地和Heroku)时,它返回此错误:
MongoError:getaddrinfo ENOTFOUND undefined undefined:27017
这是我目前的代码:
var mongoose = require('mongoose');
var dbURI = "mongodb://localhost/loc8r";
if (process.env.NODE_ENV === 'production') {
dbURI = process.env.MONGOLAB_URI;
}
mongoose.connect(dbURI);
Run Code Online (Sandbox Code Playgroud)
疑难解答我从终端启动了应用程序:
NODE_ENV=production MONGOLAB_URI=/*my mongo uri here*/
Run Code Online (Sandbox Code Playgroud)
它本地运行良好.所以我不确定问题的来源.有关排除错误的任何建议吗?
我认为你没有提供所PORT NO.需要的mongoDB.
请port no.(27017)与localhost一起提供.
试试这个:
var dbURI = "mongodb://127.0.0.1:27017/loc8r";
Run Code Online (Sandbox Code Playgroud)
getaddrinfo ENOTFOUND表示客户端无法连接到给定的地址.请尝试使用上述地址.
我希望这有帮助.
我有同样的问题,其他解决方案对我不起作用,但我用这种方式做到了
对于 mongo URI,您必须使用 mongodb
service name来代替127.0.0.1,或者localhost
例如,在下面的 docker-compose 文件中,我的 mongo 服务名称是mongodb-myapp,我像这样更改 uri mongodb://mongodb-myapp:27017/myapp,它对我有用
services:
boilerplate-api-app:
build: .
environment:
- MONGO_URI=mongodb://mongodb-myapp:27017/myapp
volumes:
- .:/app
ports:
- "5000:5000"
depends_on:
- mongodb-myapp
mongodb-myapp:
image: mongo
ports:
- "27017:27017"
Run Code Online (Sandbox Code Playgroud)
小智 5
您只是错过了指定端口号,如下所示:
var dbURI = "mongodb://localhost:27017/thenDBname"
Run Code Online (Sandbox Code Playgroud)
确保在生产服务器上托管时更改 localhost。
所以我不确定这个过程的哪一部分解决了这个问题,但我完全从 Heroku 中删除/删除了 mongolab 插件。然后我将其重新添加并使用相同的代码执行相同的步骤,它成功了!
感谢所有提供帮助的人!
| 归档时间: |
|
| 查看次数: |
20583 次 |
| 最近记录: |