如何将一个mean.js web应用程序部署到heroku,数据库托管在mlab上?

时间:2016-10-25 17:53:18

标签: node.js mongodb heroku mongoose mlab

请告诉我确切的分步说明。假设我刚刚克隆并构建了我的新MEAN.JS应用程序。它在我的localhost上正常运行。

现在我在mlabs创建了一个新的数据库。从mlabs获得该数据库的URI,用户和密钥。

现在请告诉我如何在heroku上成功部署此应用程序。

我尝试了什么:---

我更改了production.js文件,甚至是env文件夹中的development.js文件。

我已经在这两个文件中完成了这个。执行此操作后,当我在localhost上运行应用程序时,它成功运行并且数据库连接到mLabs。但是在heroku中,它会给出应用程序错误。我还包括heroku日志。

  db: {
uri: "mongodb://xxx:mLabxxx@ds023624.mlab.com:23624/project",
options: {
  user: 'username',
  pass: 'password'
},
// Enable mongoose debug mode
debug: process.env.MONGODB_DEBUG || false

}

HEROKU LOGS

根据日志,我认为它无法连接到数据库。看到这个错误: -

 [MongoError: connect ECONNREFUSED 127.0.0.1:27017]

1 个答案:

答案 0 :(得分:1)

Heroku默认在生产环境中运行您的应用,因此您应该检查生产配置。

将您链接的存储库作为基础,在this line中,它从名为MONGOHQ_URLMONGODB_URI的环境变量中获取数据库网址,因此您应该add them to Heroku MongoLab URI或用您想要的变量名替换代码(确保它也是在Heroku上创建的)。

如果它适用于您的localhost而不是Heroku,则意味着Heroku上的生产配置错误,您还应该确保将生产配置文件的更改推送到Heroku存储库。如果要使用开发环境在Heroku上进行测试,可以更改this setting