如何从visual studio代码调试child_process fork进程

时间:2018-06-16 05:04:21

标签: node.js visual-studio-code child-process

描述

从vscode调试进程执行child_process.fork无法运行并返回退出代码12.从终端会话运行相同的测试成功。

样本摩卡单元测试

import { expect } from 'chai';
import { fork } from 'child_process';
import path from 'path';

describe('Child Process Fork', () => {
  it('Successfully Forks A Simple Process', (done) => {
    const child = fork(path.join(__dirname, 'SimplyExit.js'), [], { stdio: 'pipe' });
    child.on('exit', (data) => {
      expect(data).to.equal(0);
      done();
    });
  });
});

SimplyExit.js

process.exit(0);

1 个答案:

答案 0 :(得分:2)

如果您未手动指定其他child_process.fork端口或删除,则会从inspect-brk选项激活的父节点进程执行inspect-brk将导致此错误选项。

Here's the line of code in the node.js source that causes this to happen

解决方案

execArgv: []添加到fork选项,以防止子进程继承inspect-brk选项。这是完整的工作代码。

import { expect } from 'chai';
import { fork } from 'child_process';
import path from 'path';

describe('Child Process Fork', () => {
  it('Successfully Forks A Simple Process', (done) => {
    const child = fork(path.join(__dirname, 'SimplyExit.js'), [], { stdio: 'pipe', execArgv: [] });
    child.on('exit', (data) => {
      expect(data).to.equal(0);
      done();
    });
  });
});