Как преобразовать процесс в Node.js для запуска кода JS из буфера, доступного в parent, а не из файла?

1

я использую

 child_process.fork(scriptFile) 

для вилки дочернего процесса и для выполнения JS в scriptFile. Проблема в том, что я хочу ее оптимизировать, потому что код JS, который я хочу запустить, уже доступен в буфере родителя. Теперь я пишу его в файл, а затем указывая путь к child_process.fork. Это включает два избыточных ввода-вывода. Сначала я пишу JS в файл в родительском. Затем он считывается дочерним процессом.

Любой способ предотвратить это?

Теги:
fork

1 ответ

1
Лучший ответ

Положив мой комментарий в ответ на просьбу...

Я не думаю, что вы просите о существовании.

Вы можете запустить универсальное приложение node.js, которое уже было на диске, где это приложение закодировано, чтобы получить код из stdinput, а затем вы можете подать свой код на stdinput для чтения заглушки. Никакое дополнительное чтение или запись вашего кода таким образом.


Вот пример двух простых приложений, которые делают это:

Во-первых, приложение, которое просто читает из stdin и выполняет его как Javascript:

// read-from-stdin.js
let input = "";
process.stdin.on('data', function(chunk) {
    input += chunk;
});
process.stdin.on('end', function() {
    eval(input);
});
process.stdin.on('error', function(err) {
    console.log("err:", err);
});

Затем приложение, которое запускает это приложение и передает ему несколько JS для выполнения:

const spawn = require('child_process').spawn;

let child = spawn('node', ['read-from-stdin.js'], {stdio: ['pipe', 'inherit', 'inherit']});
child.on('error', function(err) {
    console.log("err on spawn ", err);
});
child.stdin.write("console.log('Hello from your parent')");
child.stdin.end();

Когда я запускаю второй код, он запускает первый код и отправляет ему оператор console.log() через stdin, который код в первом приложении считывает из stdin и затем выполняет.

  • 0
    Можете ли вы предоставить базовый код? Теперь я немного озадачен тем, как универсальное приложение node.js может читать код из stdin, который будет выполнен?
  • 0
    @Sam - Добавлен рабочий пример кода.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню