运行 Node 子进程中的 ES6 导入语法

Run ES6 import syntax in Node child process

我正式放弃。我正在尝试 运行 一个使用 es6 导入语法的节点 es6 项目,但子进程无法运行。问题是 childprocess.fork 使用节点而不是 babel-node。我已经使用 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));

这给了我这个:

Error: channel closed at ChildProcess.target.send (internal/child_process.js:523:16)

Babel CLI page 说:

You should not be using babel-node in production.

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

以防有人遇到同样的问题。但是对于测试环境比如使用mocha。使用 this issue 我打开 mocha 我可以解决问题。

Running babel-node node_modules/mocha/bin/_mocha test.js applies by default the compiler to the child process and there is no need to set the execPath.

PS: Once you run the mocha with babel-node there is no need to pass --require or --compilers.