收藏
回答

Node12版本云函数使用serverless-mysql 日志报错 (函数调用本身有成功返回值)

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 工具 ssx releaxxxxxx xxx

云函数代码(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吗, 如何解决

最后一次编辑于  2022-02-14
回答关注问题邀请回答
收藏

2 个回答

  • Mr.Zhao
    Mr.Zhao
    2022-02-15

    加上await mysql.end() 把mysql链接关闭掉

    

    2022-02-15
    有用 1
    回复 1
    • %
      %
      2022-03-09
      谢谢回答。 12 版本里调用 end后日志显示正常了。
      但在8.9版本里即使没有调用mysql.end() 或mysql.quit()日志显示调用成功的。  




      之前没去调用mysql.end() 是我对云函数理解的问题。 以为被拉起的云函数对应的node进程会一直运行, 后面调用该函数时mysql连接可以复用不用断开
      2022-03-09
      回复
  • 疯狂的小辣椒
    疯狂的小辣椒
    2022-02-15

    你好,麻烦补充环境ID和问题发生时间点。

    2022-02-15
    有用
    回复
登录 后发表内容