我有一个MERN应用程序(Mongo Express React Node),它可以在本地运行,并连接到我的MongoDB数据库,获取数据。React前端在我将其部署到Heroku后可以正常工作,但Nodejs无法连接到Heroku上的MongoDB。环境变量(如MONGO_URI
)存储为Heroku配置变量,工作正常,但它无法连接到我的MongoDB。
Heroku日志显示以下错误消息:DISCONNECTED FROM MONGO DB
从我的server.js文件。
我该如何解决这个问题?
服务器. js文件
const express = require("express");
const dotenv = require("dotenv");
const cookieParser = require("cookie-parser");
const mongoose = require("mongoose");
const cors = require("cors");
const path = require("path");
dotenv.config();
const authRouter = require("./routes/auth");
const blogRouter = require("./routes/blog");
const userRouter = require("./routes/user");
const app = express();
app.use(express.json());
app.use(cookieParser());
app.use(cors());
app.use("/api/auth", authRouter);
app.use("/api/user", userRouter);
app.use("/api/blog", blogRouter);
if(process.env.NODE_ENV === "production"){
app.use(express.static("client/build"));
app.get("*", (req, res) => {
res.sendFile(path.resolve(__dirname, "client", "build", "index.html"));
});
}
const connect = () => {
mongoose
.connect(process.env.MONGO_URL,
{useNewUrlParser: true,
useUnifiedTopology: true,
useNewUrlParser: true})
.then(() => {
console.log("CONNECTED TO THE MONGO DB");
})
.catch((err) => {
console.log(err);
mongoose.disconnect(() => {
console.log("DISCONNECTED FROM MONGO DB");
});
})
};
app.listen(process.env.PORT || 8000, () => {
connect();
console.log("MONGO_URL", process.env.MONGO_URL);
console.log("PASSCODE", process.env.PASSCODE);
console.log(`LISTENING ON PORT ${process.env.PORT}`);
})
1条答案
按热度按时间2ekbmq321#
连接到MongoDB数据库的环境变量必须是
MONGO_URI
,而不是MONGO_URL
。否则它将无法工作。