
当 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 语法 如果连接不成功,直接抛出错误即可。 |