收藏
回答

请教一下如果修改云函数的nodejs版本

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 工具 wx901ec7abe3a62efd dev-9gq8zr7xc891659f 2.26.0

我更新了一个最新的云函数,它的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("删除未被使用的图片执行成功!")  

};



最后一次编辑于  2023-09-18
回答关注问题邀请回答
收藏

1 个回答

  • 陈晓洋
    陈晓洋
    2023-09-18

    找到解决办法了: 开发工具里可以指定node.js的版本,整了一个下午才搞定它,好痛苦啊,目前版本切换回12.16,一切运行正常了

    2023-09-18
    有用
    回复
登录 后发表内容