我认为这会很简单,但下面的操作并不像预期的那样。
我想将数据通过管道传输到一个进程,比如说(只是一个任意命令用于说明)wc
,来自 Node。
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 })
不幸的是,这会引发错误:
The value "Readable { ... } is invalid for option "stdio"
relevant bit of code from internal/child_process.js
不会立即透露预期的有效选项是什么。
最佳答案
要将特定数据显示为子进程的 stdin
数据,您可以使用 input
选项:
spawnSync('wc', ['-c'], { input : 'one two three' })
关于Node.js 将文本作为 `spawnSync` 的标准输入传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44891623/