creator:2.4.7
文档描述:
实际现象: 在before-change-files的回调函数里如果没同步调用第二个参数的话,会直接报错:
无法在child_process中异步回调
经反复测试,同样的扩展脚本,mac系统上有这问题,windows没这问题
@arsen2010
@215194780
creator:2.4.7
文档描述:
这个是没有问题的。检查一下自己的代码吧~~
其他条件是一致的吗?mac系统,ccc2.4.7版本
坐等官方回复
demo 里没执行 callback,方便提供完整的复现代码?
之前的版本可以正常运行?
重新下载附件,有执行
window,mac , m1 测试都正常没报错
我测试是拿 helloworld 测试,没有用什么其他插件或服务;
打印下 callback 看看是不是函数。
是函数,直接调callback()是可以的,放setTimeout就不行了;而且报错里指的callback不是我脚本里的callback,只是恰好名字相同,把脚本里的callback改成cb之后,报错里仍然是callback
function onBeforeBuildFinish(options, callback) {
Editor.log('onBeforeBuildFinish')
Editor.log(callback);
setTimeout(() => {
Editor.log(callback);
callback();
}, 5000);
}
建议输出一下内容。有点怀疑上下文环境问题。
按照表述,callback实际上是有传过来的。只是你在异步调用的时候丢掉了。
按照你给的方法结果如下:
'use strict';
function onBuildStart(options, cb) {
Editor.log('onBuildStart')
cb();
}
function onBeforeBuildFinish(options, cb) {
Editor.log('onBeforeBuildFinish')
Editor.log(cb);
setTimeout(() => {
Editor.log(cb);
cb();
}, 5000);
}
function onBuildFinish(options, cb) {
Editor.log('onBuildFinish')
cb();
}
module.exports = {
load() {
Editor.Builder.on('build-start', onBuildStart);
Editor.Builder.on('before-change-files', onBeforeBuildFinish);
Editor.Builder.on('build-finished', onBuildFinish);
},
unload() {
Editor.Builder.removeListener('build-start', onBuildStart);
Editor.Builder.removeListener('before-change-files', onBeforeBuildFinish);
Editor.Builder.removeListener('build-finished', onBuildFinish);
}
};

可以看出cb一直存在
~~ 这样子。确实不是使用问题了。
所以这个issue就成了未解之谜了咯?