当 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,
// ...
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.