微信小程序云函数超时, 其中一种原因及其解决方法

作者: 科技微讯

日期:

我写的一个小程序云函数在本地调试时, 可以正常执行, 没有返回任何错误, 但部署到云端后每次执行都提示超时: task timed out after 3 seconds.

超时的原因很多, 我的原因是: 该云函数通过 mongoose 连接到一个 mongodb 数据库, 执行数据库操作后没有主动关闭连接. 我的解决方法是在 return 之前添加 mongoose.connection.close(), 示例代码:

const cloud = require('wx-server-sdk');
const mongoose = require('mongoose');
cloud.init();

exports.main = async (event, context) => {
  try {
    await mongoose.connect('mongodb://xxxxxx', {
      useNewUrlParser: true,
      useUnifiedTopology: true,
      useFindAndModify: false,
      user: 'xxx',
      pass: 'xxx',
      authSource: 'xxx'
    });
    console.log('数据库连接成功!')
  } catch (e) {
    console.log('数据库连接失败:', e)
  };

// do something...

  db.close();
  return {
    event: event
  }
}