MONGODB_URI未定义

时间:2019-04-23 15:45:23

标签: node.js mongodb

按照以下指南尝试制作Facebook聊天机器人:https://medium.com/@viviancpy/part-1-facebook-chatbot-with-heroku-webhook-b14090a136c7

我根本没有节点和JavaScript的经验,主要是Python。因此,我只是简单地从GitHub复制粘贴了代码,但是当我尝试运行它时(如第4步中所述,使用“ yarn start”),出现此错误:

MongooseError:uri的{​​{1}}参数必须是字符串,为“未定义”。确保openUri()mongoose.connect()的第一个参数是字符串。

所以我看了一下代码,发现了:

mongoose.createConnection()

因此,在Python中至少这意味着MONGODB_URI常量未定义,但我不知道为什么。 可能是我缺少一个软件包(我相信它被称为),或者我在Windows上运行此代码或完全不同的代码时遇到了问题。也尝试过使用Google,但是我听不懂答案或找不到答案。

4 个答案:

答案 0 :(得分:0)

const MONGODB_URI = process.env.MONGODB_URI;

此行表示您正在尝试从计算机环境中获取mongo连接URI,您需要确保将其实际设置在那里才能正常工作

答案 1 :(得分:0)

尝试执行以下操作:

MONGODB_URI=http://localhost:27017 node index.js

用脚本替换index.js(如果需要,请替换为uri)

但是我认为您可以使用dotnev package

答案 2 :(得分:0)

来自Node JS Documentation on Process

  

process.env属性返回一个包含用户环境的对象。

process.env上阅读article,以更好地理解。我将从文章中引用关于process.env对于TL; DR的目的

  

process.env全局变量由节点在运行时注入,以供您的应用程序使用,它表示应用程序启动时所处系统环境的状态。例如,如果系统设置了PATH变量,则可以通过process.env.PATH对其进行访问,您可以使用它来检查二进制文件的位置,并在需要时对其进行外部调用。

话虽这么说,您面临的问题是您的MONGODB_URI变量是undefined,就像您错误所指出的那样,因为您从未定义过它。您遵循本文的原因是因为编写者正在将其部署到HEROKU,它将在此处自动运行。因此,要解决您的问题(如果您想在本地运行ur app)

1)下载并安装MongoDB(如果尚未安装)。

2)在Package.JSON中,特别是在"start": "node index.js"中。您可以将启动脚本更新为"start": "MONGODB_URI=http://localhost:27017 node index.js"(来自Fruty的回答)。 (默认情况下,Mongo本地服务器在端口27017上启动)。这将首先在系统中将Mongo_URI设置为ur Mongo的本地实例。然后运行Index.js文件

答案 3 :(得分:0)

正确的方法是在项目的根目录中创建一个名为“ .env”的文件,并在其中运行“ heroku local”。

heroku-cli使用此文件将创建一个具有适当环境变量的环境。

第1步:找出实际的MONGODB_URI。

第2步:创建.env文件

第3步:将MONGODB_URI ='your-actual-mongodb_uri'行写入.env文件

第4步:从“ heroku local”开始您的过程

您的进程现在可以访问process.env.MONGODB_URI,就像直接将其部署在heroku上一样。