2016-09-16 2 views
0

Я официально сдаюсь. Я пытаюсь запустить проект es6 узла, который использует синтаксис импорта es6, но дочерние процессы не будут работать. Проблема в том, что childprocess.fork использует узел, а не babel-node. Я получил его для запуска с помощью babel-узла, но теперь они не могут общаться через process.send. Я ищу любые варианты решения проблемы, возможно, есть более простой.Запуск синтаксиса импорта ES6 в дочернем процессе узла

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)

ответ

2

Babel CLI page говорит:

You should not be using babel-node in production.

Вместо скомпилировать все файлы, а затем запустить childProcess.fork() на скомпилированных файлов.

+0

Для дочернего процесса fork требуется путь к файлу для запуска. Если я скомпилирую все файлы в файл сборки, как бы я разблокировал этот код? – wayofthefuture

+0

@wayofthefuture Babel не компилирует все файлы в один файл сборки. Каждый файл компилируется отдельно. –

+0

Значит, весь проект будет загрязнен файлами другого расширения? – wayofthefuture

0

В случае, если у кого-то такая же проблема. Но для тестовой среды, такой как использование мокко. С this issue Я открываю на мокко, я мог бы решить проблему.

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 .