首页 > 解决方案 > 如何从 Visual Studio 代码中调试 child_process fork 进程

问题描述

描述

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

示例 Mocha 单元测试

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();
    });
  });
});

简单退出.js

process.exit(0);

标签: node.jsvisual-studio-codechild-process

解决方案


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

这是导致这种情况发生的 node.js 源代码中的代码行

解决方案

添加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();
    });
  });
});

推荐阅读