加载mongo数据库和前端应用程序时遇到的问题

我正在创建一个匿名讨论论坛,在这里我已经使用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通过提供白名单访问权限,但问题仍然存在。

itxfdnaaa 回答:加载mongo数据库和前端应用程序时遇到的问题

我通过更新猫鼬依赖版本> = 5.0.0来解决了此问题

即使在MongoDB Atlas的IP白名单中将CIDR添加为0.0.0.0/0之后,更新mongoose版本也将有助于解决此类问题。

本文链接:https://www.f2er.com/3022469.html

大家都在问