Typescript 如何连接两个(管道stdin和stdout)Deno子流程?

Typescript 如何连接两个(管道stdin和stdout)Deno子流程?,typescript,deno,Typescript,Deno,根据判断,一个Deno子进程(一个Deno.Process的实例)可以接收四种stdin类型中的一种,stdout也是如此。但是,文档中没有提到如何将一个子流程的输出通过管道传输到另一个子流程的输入。我试图实现的类似于基本UNIX管道(oneProcess | other),然后读取管道中第二个进程的输出。简单运行 const someProcess = Deno.run({ cmd: ["oneProcess firstParameter | another 2ndParameter"]

根据判断,一个Deno子进程(一个
Deno.Process
的实例)可以接收四种stdin类型中的一种,stdout也是如此。但是,文档中没有提到如何将一个子流程的输出通过管道传输到另一个子流程的输入。我试图实现的类似于基本UNIX管道(
oneProcess | other
),然后读取管道中第二个进程的输出。简单运行

const someProcess = Deno.run({
  cmd: ["oneProcess firstParameter | another 2ndParameter"]
});
失败,错误为:

错误:未捕获未找到:没有此类文件或目录(操作系统错误2)

因为第一个参数(字符串)应该是可执行文件


如果是Deno,我们将如何实现这一点呢?我们是否需要将
“piped”
设置为子流程的输出和输入(分别),然后手动从一个流程到另一个流程读取和写入数据

您得到的是
NotFound:没有这样的文件或目录
,因为传递给
cmd
的值必须是二进制文件的路径

第一个元素需要是二进制文件的路径

另一个不是二进制的


要使用unix管道,可以运行
bash
,然后写入
stdin

const p = Deno.run({
  cmd: ["bash"],
  stdout: "piped",
  stdin: "piped"
});

const encoder = new TextEncoder();
const decoder = new TextDecoder();

const command = "echo -n yes | md5sum";
await p.stdin.write(encoder.encode(command));

await p.stdin.close();
const output = await p.output()
p.close();

console.log(decoder.decode(output)); // a6105c0a611b41b08f1209506350279e

是的,第一个,假设我想运行一个进程,将该进程的输出传输到第二个进程,然后读取第二个进程的输出。明白了,现在我看到了错误,我的错。我以为你遇到了
oneProcess
不存在的问题。稍后我会发布一个答案。如果我的答案是你想要的,请告诉我。