我是MERN堆栈开发的初学者。我已经部署好了我的nodejs应用程序,但在heroku上没有任何错误,但是该应用程序未从mongodb atlas数据库中加载数据。该应用程序连接到数据库并在显示数据时没有任何问题在本地运行。是否有解决此问题的想法?
我已经在heroku上添加了环境变量,并在地图集上列出了所有IP地址,但该应用仍然无法从数据库中加载数据
server.js
const express = require('express'); //nodejs framework for creating web apps
const cors = require('cors');
const mongoose = require('mongoose');
const path = require('path');
require('dotenv').config(); //for setting environment variables on server
const app = express(); //creating the app
//Serve static assets if in production
if(process.env.NODE_ENV ==='production'){
//Set static folder
app.use(express.static('client/build'));
app.get('*',(req, res) => {
res.sendFile(path.resolve(__dirname,'client','build','index.html'));
});
}
////////////////////////////////////////
const port = process.env.PORT || 5000;
app.use(cors()); //for cross origin resource sharing ie.cross domain requests
app.use(express.json()); //for handling json data
const uri = process.env.ATLAS_URI;
mongoose.connect(uri,{ useNewUrlParser: true, useCreateIndex: true ,useUnifiedTopology: true });
const connection = mongoose.connection;
connection.once('open',() => {
console.log('Database connection established successfully');
})
const exercisesRouter = require('./routes/exercises');
const usersRouter = require('./routes/users');
//executes the files in the second argument when user enters the url 'rooturl/firstargument'
app.use('/exercises',exercisesRouter);
app.use('/users',usersRouter);
app.listen(port,() => {
console.log(`Server is running on port:${port}`);
});
http://justworkout.herokuapp.com/ 这是应用程式网址 练习列表应从数据库加载,但您看不到任何加载
答案 0 :(得分:2)
我有同样的问题。对我来说,解决方案是转到我的客户文件夹并更改所有获取方法。为了获取数据,我使用axios。我正在向localhost:5000发送请求,然后向/ api / etc发送请求。该请求是这样的:
axios.get("http://localhost:5000/apps/blog").then()
要使其在heroku上工作,我需要删除localhost的前缀并仅保留api路径。
axios.get("/apps/blog").then()
更改此类问题。