You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows环境下Deno.run设置stdout为inherit时终端无输出是什么原因?

问题原因

  • 核心是主进程没有等待子进程执行完成就提前退出:Deno.run仅负责启动子进程,本身是同步非阻塞方法,不会等待子进程执行结束。没有添加等待逻辑时,主进程会在git命令还没完成输出写入就直接终止,继承的标准输出自然没有内容展示。
  • Windows平台额外适配问题:Windows下的git默认依赖MinGW虚拟终端环境,子进程的输出缓冲区只有在进程正常退出时才会主动flush到继承的父进程标准流,主进程提前退出会直接跳过缓冲区flush步骤。

解决方法

在Deno.run后新增等待子进程退出的逻辑即可,修改后代码如下:

const p = Deno.run({
    cmd: ['git', 'config', '-l'],
    stdout: 'inherit',
    stderr: 'inherit'
})
// 等待子进程执行完成,确保所有输出都写入标准流
await p.status()

内容的提问来源于stack exchange,提问作者hewc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 16:18:00