繁体   English   中英

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

[英]Run ES6 import syntax in Node child process

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

这给了我这个:

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

Babel CLI 页面说:

你不应该在生产中使用babel-node

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

如果有人有同样的问题。 但是对于使用mocha等测试环境。 有了这个问题,我在 mocha 上打开我可以解决问题。

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

PS:一旦你用babel-node运行mocha就不需要传递--require--compilers

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM