我正在構建一個Electron應用程序(Node.js),它需要從具有實時反饋(stdin/stdout/stderr)的應用程序中產生gcloud app deploy
。無法在Windows上從Node.js腳本產生`gcloud app deploy`
我迅速從child_process
切換到execa,因爲我曾與child_process緩衝區,被限制在200KB(和gcloud app deploy
發送字符串的一些大塊> 200KB其崩潰的命令)在Mac OS X中的一些問題。
現在,與execa
一切似乎在OSX上正常工作,但不是在Windows上。
的代碼看起來是這樣的:
let bin = `gcloud${/^win/.test(process.platform) ? '.cmd' : ''}`
//which: https://github.com/npm/node-which
which(bin, (err, fullpath) => {
let proc = execa(fullpath, ['app', 'deploy'], {
cwd: appPath
})
proc.stdout.on('data', data => {
parseDeploy(data.toString())
})
proc.stderr.on('data', data => {
parseDeploy(data.toString())
})
proc.then(() => {
...
}).catch(e => {
...
})
})
此代碼工作完全在Mac OS X,而我有不一樣的結果,在Windows
我已經試過很多事情:
- execa()
- execa.shell()
- 選項殼:真
- 我試圖maxBuffer到1GB(以防萬一)
- 它與分離:真正的,可是我不能夠實時的應用程序,它會提示一個新的CMD.EXE,而不與節點的交互讀取標準輸出/標準錯誤。 js應用程序
- 很多child_process變體。
我已經做了GIST顯示我得到了一些測試,我已經在Windows上進行基本的子進程的腳本響應: https://gist.github.com/thyb/9b53b65c25cd964bbe962d8a9754e31f
我也開了一個問題上execa
庫:https://github.com/sindresorhus/execa/issues/97
有人已經有這個問題嗎?我搜索了四周,發現沒有什麼前途,除了這個reddit thread這不能解決這個問題。