我们有一个奇怪的问题,其中对于某些开发人员,node.js execFileSync函数异步运行,并且NOT按照它应该的方式同步运行。我们认为这是由于存在问题的机器与不存在的机器之间的某些环境差异造成的,但我们无法找到原因。 有没有人曾经体验过这个?execFileSync异步运行
这是一个简单的例子。我们有多次调用这段代码,因为我们需要调用一些外部脚本来在运行之间执行一些清理工作,但是在这些机器上,代码不会等待脚本完成并返回,然后才能继续执行脚本最终连续多次运行而不是连续运行。
execFileSync(batchPath, {stdio:[0,1,2]}, function(error, stderr, stdout) {
console.log(stderr);
console.log(stdout);
if (error !== null) {
console.log('exec error: ', error);
}
});
感谢您对此有何看法。
为什么你传递一个* synchronous *方法的回调? – mscdex
这不是我的原始代码,但我不能说为什么这样做,我猜测它可能是尝试和处理不同的输出。 – Anto
那么根据实际赋予'execFileSync'的值,你实际上可以使用'execFile',它是*异步的。 '* Sync'函数不接受回调函数,而是返回输出。 – mscdex