部署Heroku后,Mongo DB未连接到NodeJS

1bqhqjot  于 2022-11-13  发布在  Go
关注(0)|答案(1)|浏览(99)

我有一个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}`);
})
2ekbmq32

2ekbmq321#

连接到MongoDB数据库的环境变量必须是MONGO_URI,而不是MONGO_URL。否则它将无法工作。

相关问题