nodejs child_process不输出ansi数据

问题描述 投票:0回答:2

所以我试图用节点生成

npm install
命令。该代码工作正常,但我注意到的一件奇怪的事情是,节点没有给我 ansi 颜色代码以及运行命令时看到的进度条。这就是我生成孩子并收集输出的方式:

const { spawn } = require('child_process'),
    proc = spawn('npm', ['install']);

proc.stdout.setEncoding('utf8');
proc.stderr.setEncoding('utf8');

let stdout = '';
proc.stdout?.on('data', (buffer) => {
    stdout += buffer;
});

let stderr = '';
proc.stderr?.on('data', (buffer) => {
    stderr += buffer;
});

proc.on('close', (stat) => {
    console.log(stdout, stderr)
    if (stat === 0) return;
    console.log(stat);
});

命令的进度条似乎没有被捕获,并且漏洞编号的颜色相同。

node.js child-process
2个回答
0
投票

我最终使用了 node-pty 并且它工作得很好。如果您愿意,这是我的代码:

const pty = require('node-pty'),
    proc = pty.spawn('npm', ['install'], {
        name: 'xterm-color',
        cols: 80,
        rows: 30,
        cwd: process.cwd(),
        env: process.env
    });

let out = '';

proc.onData((buffer) => out += buffer);

proc.onExit((e) => {
    console.log(out, e);
});```

0
投票

Node.js 还支持 FORCE_COLOR,这将强制子进程发送的内容包含 ANSI 颜色:https://www.pettermekhaeil.com/til/add-color-using-force-color

© www.soinside.com 2019 - 2024. All rights reserved.