在heroku中部署平均堆栈应用程序时出错

Posted

技术标签:

【中文标题】在heroku中部署平均堆栈应用程序时出错【英文标题】:Error while deploying mean stack application in heroku 【发布时间】:2018-05-09 15:56:25 【问题描述】:

我尝试将平均堆栈应用程序部署到 Heroku,但是当我访问 URL 时:

https://rocky-coast-36852.herokuapp.com/%20deployed%20to%20Heroku

显示错误:

Cannot GET /%20deployed%20to%20Heroku

在尝试连接到 mongoose 数据库时也显示错误:

error in database connectonMongoError: failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED 127.0.0.1:27017]
(node:42332) DeprecationWarning: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/promises.html

这是我的 GitHub 链接:

https://github.com/saisreereddy/MyFirstApp

谁能指出我做错了什么? 非常感谢任何形式的帮助。

【问题讨论】:

【参考方案1】:

这条线似乎是你的问题的原因:

mongoose.connect('mongodb://localhost:27017/contactlistapp');

您的数据库可能没有在您的 Heroku dynos 上运行,而您正在使用 Heroku 托管的数据库插件,例如 MLab。 (如果没有,配置 Mongo 插件是您解决方案的第一步。)当这个插件被添加到您的应用程序时,它将设置一个环境变量,如 DATABASE_URL(请参阅插件文档),它将包含数据库 url、用户名、密码等。

您需要在 app.js 中更改上面的那一行,以使用 mongoose.connect(process.env.DATABASE_URL); 之类的东西从环境中提取该值,这应该在 Heroku 上正常工作

现在,您还需要在本地设置该环境变量,使用您当前在 app.js 中硬编码的值。我建议使用dotenv 来处理设置本地环境变量。如果您确实使用 dotenv,请务必将 .env 添加到您的 .gitignore 文件中。

【讨论】:

以上是关于在heroku中部署平均堆栈应用程序时出错的主要内容,如果未能解决你的问题,请参考以下文章

在 Heroku 中部署 NodeJS 应用程序时出错

在heroku上部署django网站时出错

尝试将带有顺风的 MERN 堆栈部署到 Heroku 时构建失败

使用 Tomcat 和 Mysql 将应用程序部署到 Heroku 时出错

将 Cookiecutter-Django 应用程序部署到 Heroku 时出错

将 vue 应用程序部署到 heroku 时出错