вызывать дочерний процесс через fork () при использовании ts-node - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть проект машинописного текста, и вместо того, чтобы сначала использовать tsc, я просто использую ts-node напрямую.

В моем коде мне нужно создать дочерний процесс с fork().

Если я запускаю код наподобие child_process.fork('ChildProcess.ts'), а ChildProcess.ts содержит некоторые конструкции только с машинописью (например: import {}, export, ...), то интерпретатором будет node, а не ts-node, потерпит неудачу.

Может быть рекомендовано использовать что-то вроде child_process.exec('node ./node_modules/.bin/ts-node ChildProcess.ts), но я действительно хочу / нуждаюсь в канале связи IPC, который устанавливается между родительским и дочерним процессами, когда специально используется fork().

Есть идеи, как этого добиться?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Когда указывает состояния, execArgv в разветвленном процессе наследуется от текущего процесса:

execArgv Список строковых аргументов, переданных в исполняемый файл.По умолчанию: process.execArgv.

Когда точка входа работает как:

ts-node index.ts

execArgv по умолчанию ts-node двоичный:

[ '...\\ts-node\\dist\\_bin.js' ]

И

child_process.fork('ChildProcess.ts') 

работает с ts-node тоже.

0 голосов
/ 29 сентября 2018

Если ts-node сам не обрабатывает fork (что немного удивительно, но я им не пользуюсь), и вам нужен IPC, я думаю, вы можете выбрать:

  • Заранее используйте tsc, чтобы вызывать файл JavaScript, или

  • Используйте tsc по требованию, чтобы скомпилировать файл ChildProcess.ts в ChildProcess.js file, а затем разветвите файл ChildProcess.js.

...