云函数代码(Node12+):
const mysql = require('serverless-mysql')({
config: {
host: process.env.HOST,
port: process.env.PORT,
database: process.env.DATABASE,
// 需要填写真实的用户名与密码
user: 'xxx',
password: 'xxx'
}
})
exports.main = async (event, context, callback) => {
let res
try {
res = await mysql.query('SELECT 1')
} catch (e) {
console.error(e)
}
return {
res, // 客户端能正确收到这个结果,但是后台日志有报错
code: 200
}
}
云函数调用日志输出:
{"errorCode":-1,"errorMessage":"Async invoking task timed out after 5 seconds","statusCode":433}
日志:
START RequestId:7198ee9c-610f-4f70-9773-64aaaaf4326c
REPORT RequestId:7198ee9c-610f-4f70-9773-64aaaaf4326c Duration:5000ms Memory:256MB MemUsage:11.003906MB
END RequestId:7198ee9c-610f-4f70-9773-64aaaaf4326c
}
使用Node8.9版本云函数是正常的,日志显示调用成功
这是node版本的bug吗, 如何解决
加上await mysql.end() 把mysql链接关闭掉
但在8.9版本里即使没有调用mysql.end() 或mysql.quit()日志显示调用成功的。
之前没去调用mysql.end() 是我对云函数理解的问题。 以为被拉起的云函数对应的node进程会一直运行, 后面调用该函数时mysql连接可以复用不用断开
你好,麻烦补充环境ID和问题发生时间点。