所以我正在努力通过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);
疑难解答我从终端启动了应用程序:
NODE_ENV=production MONGOLAB_URI=/*my mongo uri here*/
它在本地运行良好。所以我不确定问题的来源。有关排除错误的任何建议吗?
答案 0 :(得分:7)
我认为您没有提供PORT NO.
所需的mongoDB
。
请将port no.(27017)
与localhost一起提供。
试试这个:
var dbURI = "mongodb://127.0.0.1:27017/loc8r";
getaddrinfo ENOTFOUND
表示客户端无法连接到指定的地址。请尝试使用上述地址。
我希望这会有所帮助。
答案 1 :(得分:1)
为mLab附加组件创建的Heroku环境变量称为MONGODB_URI
(MONGOLAB_URI
可能是遗留事物)。
答案 2 :(得分:1)
所以我不确定这个过程的哪个部分解决了这个问题,但我完全删除/删除了Heroku的mongolab插件。然后我重新添加它并使用相同的代码执行相同的确切步骤并且它有效!
感谢所有帮助过的人!
答案 3 :(得分:1)
我有同样的问题,其他解决方案对我不起作用,但我用这种方式做到了
<块引用>对于 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"
答案 4 :(得分:0)
这看起来是正确的。我之前也见过这个错误(很多)。 'undefined undefined'我认为是指未定义的环境变量。尝试控制台记录您的环境变量以确保它们有效。
答案 5 :(得分:0)
为mLab附加组件创建的Heroku环境变量称为MONGODB_URI(MONGOLAB_URI可能是传统的东西)。(pneumee)
这解决了我的问题。
答案 6 :(得分:0)
嘿,您只是错过了指定的端口号,如图所示
var prices = [57, 69, 90, 108, 142, 216, 344, 459, 670, 1134]
var quantity = [50, 100, 200, 300, 500, 1000, 2000, 3000, 5000, 10000]
var min = prices[0]/quantity[0]
var savings = prices.map((v, i) => i ? `Save ${Math.round((1-(v/quantity[i])/min)*100)}%` : '')
console.log(savings)
或
var dbURI = "mongodb://localhost:27017/thenDBname"