运行 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)
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
.
我正式放弃。我正在尝试 运行 一个使用 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)
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 theexecPath
.PS: Once you run the
mocha
withbabel-node
there is no need to pass--require
or--compilers
.