我們有一個奇怪的問題,其中對於某些開發人員,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