Node.js将文本作为“spawnSync”的标准输入传递

时间:2017-07-03 18:02:24

标签: node.js node-streams

我认为这很简单,但以下内容无法正常工作。

我想从Node中将数据传输到一个进程,比如说(只是一个用于说明的任意命令)wc

docs和其他SO questions似乎表明传递Stream应该有效:

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 })

不幸的是,这会引发错误:

  

值"可读{...}对选项" stdio"

无效

relevant bit of code from internal/child_process.js并未立即显示预期的有效选项。

1 个答案:

答案 0 :(得分:8)

要将特定数据显示为子流程的stdin数据,您可以使用input选项:

spawnSync('wc', ['-c'], { input : 'one two three' })