我更新了一个最新的云函数,它的node.js的版本变成了16.13,一直报错,当我把同样的代码复制进之前旧的云函数,nodejs的版本还是12.16的云函数运行时,它就是正确的,我反复看了代码,没得问题,你们这个太不稳定了啊,最关键的是我还不能选node.js的版本,最新提交的全是16.13.这怎么也敢用于生产环境啊, 我实在受不了,这么多BUG.代码里好多兼容你们的BUG的代码.这么大的公司,为什么会这么多错误
云函数代码如下:
const cloud = require('wx-server-sdk');
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
});
const db = cloud.database();
const _ = db.command;
async function cleanUnusedImages(info) {
try {
// 查询 fileIds 表,最多查询10条数据
const { data: list } = await db.collection(info[0])
.where({
updateTime: _.lt(new Date(Date.now() - 1000 * 60 * 60 * 12)) // 图片记录超过12小时
})
.limit(10)
.orderBy("updateTime", "asc")
.get();
console.log("查询结果:", list);
for (const item of list) {
const { data: resList } = await db.collection(info[1])
.where({
fileIds: item.fileId
})
.limit(1)
.get();
if (resList.length === 0) {
await cloud.deleteFile({
fileList: [item.fileId],
});
// 文件删除成功,删除当前记录
await db.collection(info[0]).doc(item._id).remove();
} else {
// 当前文件仍在使用中,修改当前记录的修改时间
await db.collection(info[0]).doc(item._id).update({
data: {
"updateTime": db.serverDate()
}
});
}
}
console.log("定时清理未被使用的图片执行成功!" + info.toString());
} catch (error) {
console.error("执行出错:", error);
throw error;
}
}
exports.main = async (event, context) => {
// 随机获取要执行的表
const FileIdsTables = [
["houseFileIds", "houseResources"],
["roomFileIds", "houseRoom"],
["contractFileIds", "contract"],
];
const index = Math.floor(Math.random() * 3);
const info = FileIdsTables[index];
await cleanUnusedImages(info);
console.log("删除未被使用的图片执行成功!")
};
找到解决办法了: 开发工具里可以指定node.js的版本,整了一个下午才搞定它,好痛苦啊,目前版本切换回12.16,一切运行正常了