使用miniprogram-ci的uploadFunction想来批量更新云函数,测试的过程中,发现一直停留在deployed状态下,但是IDE中的云开发控制台显示,云函数已经更新成功了。
npm版本:6.1.0
node版本:8.9.1
miniprogram-ci版本:1.0.83
OS:macOS Catalina 10.15.6
IED版本:1.03.2010232
命令行显示:
will upload code under cloudfunctions/login as cloudfunction 'login' of env release-xxxx. remote-npm-install: true
checking cloudfunctio status, will only proceed on normal status
env release-xxxx's cloudfunction 'login' status: Active
get cloudfunction info done
will update cloudfunction
zip file done, updating cloudfunction code
cloudfunction code updated, installing dependencies in the cloud and deploying
env release-xxxx's cloudfunction 'login' status: Updating
env release-xxxx's cloudfunction 'login' status: Active
deployed
~~~~~~2020年12月1日分割线~~~~~~
我就想看看,究竟有没有人回复
~~~~~~2021年月1日15日分割线~~~~~~
腾讯还是牛逼的,厉害了
一模一样得问题。。。
更新到这里吧,结论还是官方的bug。下面是一个直接修改快速修复的方法,反正这类命令行应该都在于CI脚本里面,结合到脚本的npm install后面就好。
sed -i 's/setTimeout/((callback,delay) => {return setTimeout(callback,delay).unref();})/g' node_modules/miniprogram-ci/dist/cloud/uploadFunction.js
实证: 默认`maxWaitTimeout`是9e5,就是900秒,15分钟。直接修改为10秒,发现显示deployed之后,稍微等一下,就结束了。
NodeJS关于Timer的行为以及可以用的修改这种等待的方法:https://nodejs.org/en/docs/guides/timers-in-node/#leaving-timeouts-behind
2023年了,这个 BUG 依旧没有修复。
2022 年了,这个 BUG 依旧没有修复。