【发布时间】:2020-03-22 21:27:42
【问题描述】:
我正在创建一个匿名讨论论坛,我在其中使用 Heroku 在 MongoDB Atlas(云平台)上部署了我的 MongoDB。整个应用程序是使用 React 开发的。这是我的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。当此行未注释时:
mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost/discussion');
数据库加载正常,前端代码在本地主机上也可以正常工作。
但我正在尝试使用以下代码将我的数据库托管在云上(以解决 Heroku 构建的问题):
mongoose.connect(process.env.MONGODB_URI || 'mongodb+srv://xxx:xxx@cluster0-xucmg.mongodb.net/test?retryWrites=true&w=majority');
我不确定为什么由于这条线,前端部分没有被加载(在 Heroku 部署链接上)。我想这可能是因为没有加载数据库。但是,如果有人能帮助我解决这个问题,那将是一个很大的帮助。我尝试通过提供白名单访问来遵循此解决方案:Connecting Heroku App to Atlas MongoDB Cloud service,但问题仍然存在。
【问题讨论】:
标签: node.js mongodb heroku mongodb-atlas