Mongodb MongoError:getaddrinfo ENOTFOUND未定义未定义:27017
因此,我正在努力通过曼宁的《获取平均值》一书,并按照第5章中的步骤,尝试使用Mongolab上的db作为Heroku的附加组件。当我在本地和Heroku上运行此代码时,它返回以下错误: MongoError:getaddrinfo ENOTFOUND未定义未定义:27017 这是我当前的代码:Mongodb MongoError:getaddrinfo ENOTFOUND未定义未定义:27017,mongodb,heroku,mongoose,mlab,Mongodb,Heroku,Mongoose,Mlab,因此,我正在努力通过曼宁的《获取平均值》一书,并按照第5章中的步骤,尝试使用Mongolab上的db作为Heroku的附加组件。当我在本地和Heroku上运行此代码时,它返回以下错误: MongoError:getaddrinfo ENOTFOUND未定义未定义:27017 这是我当前的代码: var mongoose = require('mongoose'); var dbURI = "mongodb://localhost/loc8r"; if (process.env.NODE_ENV
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*/
有了这些,它在本地运行良好。所以我不确定这个问题是从哪里来的。对列出的错误进行故障排除有什么建议吗?这看起来是正确的。我以前也见过这个错误(很多次)。“undefined undefined”我认为是指您的环境变量未定义。尝试将环境变量记录到控制台日志中,以确保它们有效 我认为您没有提供
mongoDB
所需的端口号
请提供端口号(27017)
以及本地主机
试试这个:
var dbURI = "mongodb://127.0.0.1:27017/loc8r";
getaddrinfo ENOTFOUND
表示客户端无法连接到给定地址。请用上面的地址试试
我希望这会有所帮助。为mLab插件创建的Heroku环境变量名为MONGODB_URI
(MONGOLAB_URI
可能是一个遗留问题)。所以我不确定这个过程的哪一部分解决了这个问题,但我从Heroku完全删除了MONGOLAB插件。然后我又把它加了回去,用同样的代码执行同样的步骤,结果成功了
谢谢所有帮忙的人 为mLab附加组件创建的Heroku环境变量称为MONGODB_URI(MONGODB_URI可能是遗留的东西)。(气动)
这为我解决了问题。您刚才没有指定端口号,如图所示:
var dbURI = "mongodb://localhost:27017/thenDBname"
确保在生产服务器上托管时更改本地主机。如果您使用docker解决此问题,我将使用此解决方案解决此问题
我也有同样的问题,其他的解决方案对我不起作用,但我就是这样做的
对于mongo URI,您必须使用您的mongodb服务名称
,而不是127.0.0.1
或localhost
例如,在下面的docker compose文件中,我的mongo服务名称是mongodb myapp
,我像这样更改urimongodb://mongodb-myapp:27017/myapp
这对我很有用
服务:
样板api应用程序:
生成:。
环境:
-蒙古里=mongodb://mongodb-myapp:27017/myapp
卷数:
-.:/app
端口:
- "5000:5000"
取决于:
-mongodb myapp
mongodb myapp:
图片:mongo
端口:
- "27017:27017"
所以我将我的环境记录下来,并将其推送到heroku,它会输出“production”,看起来不错。因此,我猜这个错误与使用process.env.MONGOLAB_URI
有关。出于某种原因,看看下面的对话,pneumee完全正确地认为MONGOLAB_URI是传统的。我忘记了,MONGODB_URI是您想要用作Heroku env变量的。然而,对于本地测试来说,这并不重要,因为您只是在为自己创建并提供一个变量。您是否正在使用Nodemon启动应用程序?您用于启动的确切命令是什么?为了进行调试,还可以尝试添加console.log('DB URI:'+process.env.MONGOLAB_URI);在这个文件的某个地方,这样你就可以很容易地监视它。它在本地运行良好。问题是当它尝试使用mongodab_URI
时,我尝试更改为MONGODB_URI
,但它仍然输出相同的错误当mongoose尝试连接时,dbURI
设置为什么?(显然,屏蔽或更改连接字符串中的任何敏感信息-格式是我感兴趣的内容)。嗯,我不想检查。。。它以未定义的形式出现。这肯定是个问题,但是看看其他人的设置,我不知道为什么process.env.MONGOLAB_URI
在上面的代码中没有返回任何内容。您是否能够通过Heroku CLI工具查看值:?是的,通过该命令,我得到如下结果:mongodb://username:pasword@ds010000.mlab.com:10000/heroku_adcljdt请查看您的答案。两条建议的行是相同的。