我尝试将平均堆栈应用程序部署到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
有人可以确定我做错了吗?任何形式的帮助都非常感谢。
这条线似乎是你的问题的原因:
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文件中。