无法防止节点崩溃并在响应中发送错误


Connection.js
const mysql = require("mysql");
var mysqlConnection = mysql.createConnection({
host: "xxxxx.amazonaws.com",
user: "admin",
password: "xxx",
database: "xxx",
multipleStatements: true,
});
var connect=()=> return new Promise((resolve,reject)=>{
mysqlConnection.connect((err) => {
if (err) {

reject ("Failed to connect")
}
else{
resolve ("Connected")
}
});
})
module.exports = { mysqlConnection,connect};
server.js
app.get("/", (req, res) => {

var fetchDetail = `xxxx`

connect()
.then((result)=>{
console.log(result)
mysqlConnection.query(fetchDetail, (error, result, fields) => {
if (error) {
console.log(error);
} else {
console.log("Successfull");
res.send(result);
}
});
})
.catch((err)=>{

res.send(err)
})
}
);

如果我在互联网关闭时点击了URL,我想处理由于未建立连接而发生的错误,并将此错误作为响应发送,这样我就可以在前端处理它。但实际发生的情况是,我的节点服务器因错误而崩溃,它没有将错误作为响应发送。我处理它的方式不对吗?我还能做什么?

app.get("/", (req, res) => {

var fetchDetail = `xxxx`

connect()
.then((result)=>{
console.log(result)
mysqlConnection.query(fetchDetail, (error, result, fields) => {
if (error) {
console.log(error);
} else {
console.log("Successfull");
res.send(result);
}
});
})
.catch((err)=>{
let e=new Error("Some thing went wrong")
e.status=500;
next(e)
})
}
);
app.use(function (err, req, res, next) {
console.log(err)
res.status(500).send('Something broke!')
})

我已经阅读了如何在Express中从异步函数处理错误的文档。https://expressjs.com/en/guide/error-handling.html

最新更新