在Node子进程

时间:2016-09-16 21:33:34

标签: javascript node.js ecmascript-6 babeljs child-process

我正式放弃了。我正在尝试运行使用es6导入语法的节点es6项目,但子进程将无法正常工作。问题是childprocess.fork使用节点而不是babel节点。我已经让它使用babel-node运行,但现在他们无法通过process.send进行通信。我正在寻找解决问题的方法,也许有一个更简单的方法。

let appPath = path.dirname(require.main.filename);
let babelPath = path.join(appPath, 'node_modules/.bin/babel-node.cmd'); //WINDOWS

let filepath = path.join(__dirname, 'processes', moduleName);
let process = childProcess.fork(filepath, { execPath: babelPath });

process.on('message', msg => console.log(msg));

给了我这个:

  

错误:频道已关闭       在ChildProcess.target.send(internal / child_process.js:523:16)

2 个答案:

答案 0 :(得分:1)

Babel CLI page说:

  

您不应该在制作中使用babel-node

相反,首先编译所有文件,然后在编译文件上运行childProcess.fork()

答案 1 :(得分:-1)

如果有人遇到同样的问题。但对于测试环境,如使用摩卡。随着this issue我打开摩卡,我可以解决问题。

  

默认情况下,运行babel-node node_modules/mocha/bin/_mocha test.js会将编译器应用于子进程,而无需设置execPath

     

PS:使用mocha运行babel-node后,无需通过--require--compilers