gpt4 book ai didi

node.js - 提示用户的 Node 运行命令

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

我正在尝试从使用 Node 调用的 .js 文件运行命令(aws configure)。我一直在使用child_process它允许我执行命令或批处理文件。但是,当该文件通常提示用户输入用户名和密码之类的信息时,我无法进行该交互。

我尝试使用process.stdin与 Node 以便也许使用 Node 作为用户输入的中间人,但我无法将两者链接在一起。

如果有人有任何想法那就太好了!

var spawn = require('child_process').spawn;
var mystdin = process.stdin;
var conf = spawn('aws configure', {input: mystdin, shell: true});

//When command returns
conf.stdout.on('data', function(data) {
console.log('stdout: ' + data);

//prompt for input
mystdin.resume();
mystdin.setEncoding('utf8');
var util = require('util');

mystdin.on('data', function (text) {
//INSERT ANSWER HERE
console.log('received data:', util.inspect(text));
if (text === 'quit\n') {
done();
}
});

function done() {
console.log('Now that process.stdin is paused, there is nothing more to do.');
process.exit();
}
});

conf.stderr.on('data', function(data) {
console.log('stdout: ' + data);
});

conf.on('close', function(code) {
console.log('child precess exited with code ' + code);
});

这就是我目前正在走的路。如果有人有更好的建议请告诉我!

谢谢

最佳答案

两个想法:首先,我认为参数应该位于第二个参数中。其次,也许 aws 命令没有意识到它是一个交互式终端或其他东西。您可以尝试像这样使用 child_process ,或者如果这不起作用,则使用 pty.js:

var pty = require('pty.js');

var term = pty.spawn('aws', ['configure'], {
name: 'xterm-color',
cols: 80,
rows: 30,
cwd: process.env.HOME,
env: process.env
});

term.on('data', function(data) {
console.log(data);
});

关于node.js - 提示用户的 Node 运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39238368/

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