gpt4 book ai didi

node.js - 使用换行符读取 Node 子进程(spawn)stdout

转载 作者:行者123 更新时间:2023-12-05 06:44:24 24 4
gpt4 key购买 nike

我正在尝试在 node.js 中运行一个子进程

function runProcess (args) {
args = args || [];
var proc = spawn('node', [path.join(__dirname, '..', 'bin', 'library.js')].concat(args), {cwd: __dirname});
proc.stdout.setEncoding('utf8');
return proc;
}

我有一个使用上述函数的测试:

describe('test', function () {
it('should list installed generators', function (done) {
var process = runProcess();
var data = '';
process.stdout.on('data', function(data) {
var str = data.toString(), lines = str.split(/(\r?\n)/g);
for (var i=0; i<lines.length; i++) {
console.log("chucnk ---------> " + lines[i]); // only prints one line
}
});
process.on('close', function (code) {
code.should.equal(0);
data.should.match(/\[process\] ├── bad/);
data.should.match(/\[process\] └── test/);
done();
});
});

该进程使用 chalk 和一个名为 log.js 的文件来显示控制台输出:

var chalk = require('chalk');

module.exports = function(){
'use strict';
var sig = '['+chalk.green('process')+']';
var args = Array.prototype.slice.call(arguments);
args.unshift(sig);
console.log.apply(console, args); // Invoked 3 times!
return this;
};

如果我手动运行该过程,我可以看到预期的输出:

[process] Installed generators
[process] ├── bad
[process] └── test

但是当我在单元测试中运行它时,缺少第 2 行和第 3 行

chucnk ---------> [process] Installed generators
chucnk --------->
chucnk --------->

我在 NodeJS spawn stdout string format 尝试了提议没有运气。

你知道为什么我无法阅读第一行之后的行吗?

最佳答案

这对我有用:

  child.stdout.on('data', (data) => {
process.stdout.write(data);
});

但我想你说过你已经尝试过了

关于node.js - 使用换行符读取 Node 子进程(spawn)stdout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29236874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com