Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb MongoError:getaddrinfo ENOTFOUND未定义未定义:27017_Mongodb_Heroku_Mongoose_Mlab - Fatal编程技术网

Mongodb 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

因此,我正在努力通过曼宁的《获取平均值》一书,并按照第5章中的步骤,尝试使用Mongolab上的db作为Heroku的附加组件。当我在本地和Heroku上运行此代码时,它返回以下错误:

MongoError:getaddrinfo ENOTFOUND未定义未定义: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*/

有了这些,它在本地运行良好。所以我不确定这个问题是从哪里来的。对列出的错误进行故障排除有什么建议吗?

这看起来是正确的。我以前也见过这个错误(很多次)。“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
,我像这样更改uri
mongodb://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请查看您的答案。两条建议的行是相同的。