部署 mongodb 和 express 项目时出错

Posted

技术标签:

【中文标题】部署 mongodb 和 express 项目时出错【英文标题】:Error on deploying mongodb and express project 【发布时间】:2021-12-18 12:35:40 【问题描述】:

我正在部署具有猫鼬连接的快速应用程序。在本地主机上一切正常。但是当我部署到 heroku 时,我收到一个错误“应用程序错误”,状态为 503。

当我尝试在没有 mongoose 连接的情况下进行部署时,我的应用程序在 heroku 服务器上完美运行。所以我发现问题可能出在猫鼬连接上。

index.js 猫鼬连接部分代码(不适用于 heroku):

app.get("/", (req, res) => 
  res.send(`Server launched perfectly!`);
);

const PORT = process.env.PORT || 5000;

mongoose.connect(process.env.CONNECTION_URL,  useNewUrlParser: true, useUnifiedTopology: true )
  .then(() => app.listen(PORT, () => console.log(`Server Running on Port: http://localhost:$PORT`)))
  .catch((error) => console.log(`$error did not connect`));

mongoose.connect(process.env.CONNECTION_URL).then(()=>console.log('...'));

没有猫鼬连接的index.js(在heroku上完美运行):

app.get("/", (req, res) => 
  res.send(`Server launched perfectly!`);
);

const PORT = process.env.PORT || 5000;

app.listen(PORT, () => console.log(`Server Running on Port: http://localhost:$PORT`));

这可能是一个不同的问题,但 Procfile 和 package.json 都可以。

【问题讨论】:

【参考方案1】:

连接应该是异步的,你可以这样创建一个函数:

const connect = async () => 
    try 
        const db = await mongoose.connect(DB_URL, 
            useUnifiedTopology: true,
            useNewUrlParser: true,
            useFindAndModify: false
        );
        
        const  name, host  = db.connection;
        console.log(`Conección correcta a la base de datos $name en $host`);
     catch(error) 
        console.log('Problemas al conectarse a la DB. Error ->', error);
    
;

【讨论】:

以上是关于部署 mongodb 和 express 项目时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Express NodeJS 项目部署到 Centos 服务器?

使用 mongoose 将表单数据插入 mongodb 时出现莫名其妙的行为

Dockers 部署 MongoDB + mongo-express

云原生之Docker实战使用Docker部署MongoDB数据库管理工具Mongo-Express

Mongo基础使用,以及在Express项目中使用Mongoose

通过 express、mongoose 和 angular 删除 mongo 文档时出现 404