当 nodejs 运行时间长之后再去请求 nodejs 的接口会报错
Error: Packets out of order. Got: 0 Expected: 9
...
code: 'PROTOCOL_PACKETS_OUT_OF_ORDER',
fatal: true
数据库文件database.js
部分代码
const mysql = require('mysql');
const fs = require('fs');
const secret = require('./secret.json');
const isDev = process.env.NODE_ENV === 'development';
const connection = mysql.createConnection({
host: 'localhost',
user: isDev ? secret.mysql.dev.username : secret.mysql.product.username,
password: isDev ? secret.mysql.dev.password : secret.mysql.product.password,
database: "hpchat",
connectTimeout: 1000 * 60 * 10,
})
module.exports = async res => {
let response
if (res) response = require('./response.js')(res);
const query = (sql, params, callback) => {
return new Promise(async (resolve) => {
// check mysql connection is timeout
if (connection.state === 'disconnected') {
await connection.connect();
}
connection.query(sql, params, (err, result) => {
if (err) {
if (callback) callback(err);
if (!fs.existsSync('./error_log.txt')) {
fs.writeFileSync('./error_log.txt', '');
}
const file = fs.readFileSync('error_log.txt');
const path = res.req.url;
const message = `[${new Date().toLocaleString()}] ${path} | ${sql} | ${err.message}\n`;
fs.writeFileSync('error_log.txt', message + file);
if (res) response(500, {
"message": {
"zh": "数据库异常,请查看日志",
}
})
} else {
resolve(result);
if (callback) callback(null, result);
}
})
})
}
return {
query,
// ...
}
}
1
zhennann 2023-01-07 09:25:18 +08:00
callback 、promise 、await ,三者用混了
|
2
humbass 2023-01-08 00:49:47 +08:00
promise 里头就不要用 async await 语法
如果连接不成功,直接抛出错误即可。 |