gpt4 book ai didi

javascript - 在 Node 中生成后捕获子进程中的输入

转载 作者:太空宇宙 更新时间:2023-11-04 00:03:46 24 4
gpt4 key购买 nike

我正在开发一个小型 cli 工具,该工具可以根据目录中设置的项目自动部署 Google Home 操作。

基本上,我的脚本检查目录,然后询问要部署哪个项目。应该运行的实际命令来自 Google 的 cli gactions

为了使用参数运行它,我在 Node 脚本中设置了一个生成的进程:

const { spawn } = require('child_process')
const child = spawn('./gactions', [
'update',
'--action-package',
'<PATH-TO-PACKAGE>',
'--project',
'<PROJECT-NAME>'
])

child.stdout.on('data', data => {
console.log(data)
}

但是,第一次部署项目时,gactions cli 将提示输入授权代码。运行上面的代码,我实际上可以看到提示,但是当实际输入该代码时脚本不会继续。

我想子进程中一定有某种方法来捕获该输入?或者这根本不可能?

最佳答案

只需将所有标准输入从父进程传输到子进程,并将所有输出从子进程传输到父进程。

下面的代码是任何 shell 命令的完整包装,具有输入/输出/错误重定向:

const { spawn } = require('child_process');
var child = spawn(command, args);

child.stdout.pipe(process.stdout);
child.stderr.pipe(process.stderr);
process.stdin.pipe(child.stdin);

child.on('exit', () => process.exit())

请注意,如果您通过管道传输 stdout,则不再需要处理 data 事件。

关于javascript - 在 Node 中生成后捕获子进程中的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53376908/

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