我正在创建一个匿名讨论论坛,在这里我已经使用Heroku在MongoDB Atlas(云平台)上部署了MongoDB。整个应用程序是使用React开发的。这是我的.eq
代码:
server.js
我的数据库名称是var express = require('express');
const path = require('path');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var models = require('./api/models/message');
var routes = require('./api/routes/routes');
var port = process.env.PORT || 3001;
var app = express();
var Message = mongoose.model('Message')
// Uncomment this line to run it on development mode (localhost) -- discussion is our db name //
// mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost/discussion');
// This line is working on production mode //
mongoose.connect(process.env.MONGODB_URI || 'mongodb+srv://xxx:xxx@cluster0-xucmg.mongodb.net/test?retryWrites=true&w=majority');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
routes(app);
if (process.env.NODE_ENV === "production") {
app.use(express.static("frontend/build"));
console.log("production");
}
app.get('*',function (request,response){
response.sendFile(path.resolve(__dirname,'frontend/build','index.html'))
});
app.listen(port);
console.log('Server running on port ' + port);
。取消注释该行时:
discussion
数据库可以正常加载,并且前端代码在localhost上也可以正常运行。
但是我正在尝试通过以下代码将数据库托管在云上(以解决Heroku构建问题):
mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost/discussion');
我不确定为什么由于这一行而未加载前端部分(在Heroku部署链接上)。我认为这可能是因为数据库未加载。但是,如果有人可以帮助我解决这个问题,那将是一个很大的帮助。我尝试采用以下解决方案:Connecting Heroku App to Atlas MongoDB Cloud service通过提供白名单访问权限,但问题仍然存在。