3
我認爲這很簡單,但以下內容不能按預期工作。Node.js將文本作爲`spawnSync`的標準輸入傳遞給我。
我想將數據傳輸到一個進程,比如來自Node的wc
(說明只是一個任意命令)。
的docs等SO questions似乎表明,經過一個流應該工作:
const {spawnSync} = require('child_process')
const {Readable} = require('stream')
const textStream = new Readable()
textStream.push("one two three")
textStream.push(null)
const stdio = [textStream, process.stdout, process.stderr]
spawnSync('wc', ["-c"], { stdio })
不幸的是,這將引發一個錯誤:
The value "Readable { ... } is invalid for option "stdio"
的relevant bit of code from internal/child_process.js
不會立即揭示了什麼預期的有效選項是。
這是頗耐人尋味!我只設法通過直接將數據傳遞給'input'選項而不是重新分配'stdin'來工作。 –
_「請注意,流必須具有基礎描述符」_「。我不認爲你的'textStream'有一個。 – robertklep
謝謝@robertklep - 我也注意到了;從我讀過的所有內容中,我們並不清楚爲什麼需要描述符,它是如何實現/與常規流不同的,或者在任何情況下如何解決它。這是一個奇怪的,看似武斷的要求。 –