я использую
child_process.fork(scriptFile)
для вилки дочернего процесса и для выполнения JS в scriptFile. Проблема в том, что я хочу ее оптимизировать, потому что код JS, который я хочу запустить, уже доступен в буфере родителя. Теперь я пишу его в файл, а затем указывая путь к child_process.fork. Это включает два избыточных ввода-вывода. Сначала я пишу JS в файл в родительском. Затем он считывается дочерним процессом.
Любой способ предотвратить это?
Положив мой комментарий в ответ на просьбу...
Я не думаю, что вы просите о существовании.
Вы можете запустить универсальное приложение 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 и затем выполняет.