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

如何将C#控制台应用的stdio传递至Node.js并捕获其输出?

在C#控制台应用中捕获Node.js脚本及子进程的输出

核心问题原因

NodeJsEngine 默认不会自动将 Node.js 进程的标准输出/错误转发到 C# 控制台,需要显式配置输出重定向并处理对应的输出事件。

解决方案步骤

1. 修改C#代码,配置输出重定向

初始化NodeSettings时开启标准输出/错误的重定向,绑定事件处理函数将捕获到的输出打印到C#控制台:

using Jering.Javascript.NodeJS;
using System;

class Program
{
    static void Main(string[] args)
    {
        var nodeSettings = new NodeSettings
        {
            UseBuiltinLibrary = true,
            RedirectStandardOutput = true, // 开启标准输出重定向
            RedirectStandardError = true,  // 开启标准错误重定向
            OnOutputDataReceived = (sender, e) => 
            {
                if (!string.IsNullOrEmpty(e.Data))
                {
                    Console.WriteLine(e.Data);
                }
            },
            OnErrorDataReceived = (sender, e) => 
            {
                if (!string.IsNullOrEmpty(e.Data))
                {
                    Console.Error.WriteLine(e.Data);
                }
            }
        };

        using (IJsEngine engine = new NodeJsEngine(nodeSettings))
        {
            engine.ExecuteFile("SpawnServer.js");
            // 如需等待Node进程及子进程结束,可添加阻塞逻辑
            // engine.WaitForExit();
        }
    }
}

2. 调整Node.js脚本的参数与输出逻辑

原脚本中参数拼接存在问题,同时可优化输出确保内容被正确刷新:

const { spawn } = require("child_process");

console.log('Hi');
process.stdout.write("Hi\n"); // 添加换行确保输出被及时flush

// 修正参数数组:将命令参数拆分为独立元素
const child = spawn("npx", ["ansible-language-server", "--stdio"], { 
    stdio: 'inherit' // 子进程输出将继承Node.js的标准流,进而被C#端捕获
});

// 可选:监听子进程退出状态
child.on('exit', (code) => {
    console.log(`子进程退出,代码: ${code}`);
});

3. 关键说明

  • 开启RedirectStandardOutput和RedirectStandardError后,Node.js的console.log、process.stdout.write输出会通过对应事件传递到C#控制台。
  • 子进程使用stdio: 'inherit'时,其输出会直接通过Node.js进程的标准流转发,无需额外处理即可被C#捕获。
  • 若需要更精细的输出控制,可将子进程stdio设为['pipe', 'pipe', 'pipe'],手动监听子进程的stdout/stderr并通过process.stdout/process.stderr转发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:27:41