部署 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