小编SCP*_*002的帖子

Node.js 生成:保持 StdOut 和 StdErr 保持原始顺序

尝试从node.js v12.6.0运行Windows批处理脚本并以正确的顺序实时捕获其输出。

但在测试过程中,stdout 和 stderr 的顺序经常(并非总是如此,但在 80% 的情况下)是混合的。

如何保持 stdout 和 stderr 的原始顺序?


这是我用于测试的 JavaScript 片段:

const spawn = require('child_process').spawn;

// Using 'inherit' to fix:
// "ERROR: Input redirection is not supported, exiting the process immediately".

const options = {
    stdio: [
        'inherit', // StdIn.
        'pipe',    // StdOut.
        'pipe'     // StdErr.
    ],
};

const child = spawn('exectest.cmd', options);

let mergedOut = '';

child.stdout.setEncoding('utf8');
child.stdout.on('data', (chunk) => {
    process.stdout.write(chunk);
    mergedOut += chunk;
});

child.stderr.setEncoding('utf8');
child.stderr.on('data', (chunk) => {
    process.stderr.write(chunk);
    mergedOut += …
Run Code Online (Sandbox Code Playgroud)

javascript batch-file race-condition spawn node.js

4
推荐指数
1
解决办法
6023
查看次数

标签 统计

batch-file ×1

javascript ×1

node.js ×1

race-condition ×1

spawn ×1