#javascript #node.js #filestream #stdio
#javascript #node.js #filestream #стандартный вывод
Вопрос:
Например,
У меня есть этот фрагмент кода в файле (допустим, он называется main.js) :
function main(){
console.log(5);
}
И у меня есть другой файл, из которого я хочу получить стандартный вывод main.js.
Мой текущий код :
var readline = require('readline');
const fs = require('fs');
var rl = readline.createInterface({
input : fs.createReadStream("./src/main.js",{encoding: "utf8"}),
output: process.stdout,
terminal: false
})
rl.on('line',parseCB)
function parseCB (line) {
process.stdout.write(line 'n') //<--- what you expect rl.write to do.
}
Но проблема в том, что createReadStream получает все содержимое файла. Как я мог получить стандартный вывод только из main.js в качестве входных данных во втором файле?
Комментарии:
1. что вы подразумеваете под стандартным выводом? вы хотите вызвать скрипт с помощью node script.js а затем извлечь stout из другого файла?
Ответ №1:
Чтобы ваш скрипт выводил данные в stdout, вам нужно каким-то образом его выполнить. Однако ваша первая проблема заключается в том, что выполнение main.js в нынешнем виде он фактически ничего не выводит. Вы определяете main()
, но вам нужно явно вызвать функцию где-то вроде:
function main(){
console.log(5);
}
main();
Теперь, если вы запустите, node main.js
вы получите ожидаемое 5
в stdout.
Вот два варианта доступа к этим выводам в другом скрипте.
Вариант 1: выполнить main.js в качестве дочернего процесса script.js
//script.js
const { exec } = require('child_process');
const child = exec('node main.js', (error, stdout, stderr) => {
if (error) {
throw error;
}
process.stdout.write('Executed main.js and got: ' stdout)
});
Запуск node script.js
приведет к: Executed main.js and got: 5
Вариант 2: Выполнить main.js и передать его выходные данные в script.js
//script.js
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
terminal: false,
});
rl.on('line', (line) => {
console.log(`Read line: ${line}`);
});
Запуск node main.js | node script.js
приведет к: Read line: 5