从父进程中的子进程接收调试函数的输出

时间:2017-12-23 08:54:14

标签: node.js debugging

所以,我想要实现的目标是什么:

我正在运行主进程,它会分叉2个其他节点进程。我正在使用来自npm的this debug library,我需要将子进程的输出(调试函数函数)输出到父输出(stdoutstderr)。

目前我成功传输的是console.log("...");但不是:

var log = require('debug')('service');
log.color = 3;
log("...");

我正在使用此代码分发子进程:

var fork = require('child_process').fork;

var child_options = {
    cwd: __dirname,
    env: process.env,
    stdio: [ 'ignore', process.stdout, process.stderr, 'ipc' ],
    deatached: false,
    shell: true
};

var job_node = fork('job_node', [], child_options);

任何人都可以帮我找出问题所在吗?谢谢:))

修改: 这个问题可能不是由流管道中的某种错误引起的 -  相反,现有/不存在控制台窗口,连接终端。

当我尝试使用内置工具从PhpStorm中运行服务器时,它只显示console.log函数输出,即使是来自主进程

TheKronnY

1 个答案:

答案 0 :(得分:0)

<强>解决

为了尝试,我尝试在主进程中使用debug.enable('master,job,service');函数,使用

我使用export function metaDataEpic(action$: ActionsObservable<metaDataActions>) { return action$ .ofType(META_DATA_REQUEST) .mergeMap((action: metaDataActions) => { const {language} = action; const requestObservable = Observable.zip( Observable.fromPromise(couriersApi().then(r => r.json())), Observable.fromPromise( itemCategoriesApi({language}).then(r => r.json()) ), Observable.fromPromise(airportsApi().then(r => r.json())), (couriers, items, airports) => { return Observable.of(getMetaDataSuccess({ couriers, items, airports })) ).map(response => response.value) } ).catch(e => { return Observable.of(getMetaDataFail(e)); }); return requestObservable; }); } 在其他进程中启用已使用的命名空间并且它有效,所以我不知道为什么,但默认情况下禁用在子进程中创建的其他命名空间。

相关问题