gpt4 book ai didi

javascript - 如何从其他文件标准输出中获取输入?

转载 作者:行者123 更新时间:2023-11-30 19:45:21 24 4
gpt4 key购买 nike

例如,

我在一个文件中有这段代码(假设它叫做 ma​​in.js):

function main(){

console.log(5);
}

我还有另一个文件,我想在其中从 ma​​in.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 获取的是整个文件内容。我怎么能只从 ma​​in.js 获取 stdout 作为第二个文件的输入?

最佳答案

要让您的脚本在标准输出上输出,您需要以某种方式执行它。但是,您的第一个问题是按原样执行 main.js 实际上不会输出任何内容。您定义了 main() 但您需要在某处显式调用该函数,例如:

function main(){

console.log(5);
}

main();

现在,如果您运行 node main.js,您会在标准输出上获得预期的 5

这里有两个选项可以在另一个脚本中访问该输出。

方案一:将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

关于javascript - 如何从其他文件标准输出中获取输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54997753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com