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

时间:2017-11-26 06:07:49

标签: heroku mongoose runtime-error mean-stack

我尝试将平均堆栈应用程序部署到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 个答案:

答案 0 :(得分:0)

这一行似乎是导致问题的原因:

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文件中。