所以,我想要实现的目标是什么:
我正在运行主进程,它会分叉2个其他节点进程。我正在使用来自npm的this debug library,我需要将子进程的输出(调试函数函数)输出到父输出(stdout
,stderr
)。
目前我成功传输的是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
答案 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;
});
}
在其他进程中启用已使用的命名空间并且它有效,所以我不知道为什么,但默认情况下禁用在子进程中创建的其他命名空间。