node.js - 如何从 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);
解决方案
如果您不手动指定不同的端口或删除该选项child_process.fork
,则从使用选项激活的父节点进程执行将导致此错误。inspect-brk
inspect-brk
解决方案
添加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();
});
});
});
推荐阅读
- javascript - Node.js 数据库更新对象作为列表
- python - 使用 selenium python 单击复选框
- java - 如何使用生成的 id 检查记录的唯一性?
- ios - Firestore getDocument 无法正常工作
- sql - 如何将 SQL Server 中从当前行到 CTE 中最后一行的列的值相加
- python - 熊猫移动平均线
- r - 在R中对没有for循环的项求和
- java - 实时检测特定图像的最佳方法,Android (JAVA)
- jquery - Ajax jQuery 更改提交输入按钮值 - 但丢失 CSS 格式
- azure-devops - 无法在使用 v6.0 api 的 create_test_result_attachment 运行结果中添加附件