gpt4 book ai didi

node.js - NodeJS : Make it possible for user input when running child_process

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

我正在尝试创建一个 Node 脚本,该脚本将询问用户几个问题,保存输入并使用答案运行 mvn archetype:generate 命令来安装他们的环境。

我已经了解了 Maven 命令运行的情况。但是,当 Maven 要求用户输入诸如 groupId 和 `` 之类的值时,我可以输入这些值,给出一个 [enter] ,然后就停止了。

它不接受输入并处理它们。它所做的只是显示它,就像 CLI 所做的那样,但不接受它们。

下面是一段代码,其中预先填充了用户输入的值:

var spawn = require('child_process').spawn;
var answerCollection = {
"name": "nameOfMyArchetype", //answer of inquiry
"version": "1.2.3.4" //answer of inquiry
};
var cmd = "mvn";
var args = [
"archetype:generate",
"-DarchetypeArtifactId=" + answerCollection.name,
"-DarchetypeGroupId=com.backbase.expert.tools",
"-DarchetypeVersion=" + answerCollection.version
];
var runCmd = function(cmd, args, callback) {

var child = spawn(cmd, args);

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

child.stdout.on('end', function(res) {
console.log("stdout:end");
callback(res);
});

child.stderr.on('data', function(text) {
console.log("stderr:data");
console.log(data);
});

child.stderr.on('exit', function(data) {
console.log("stderr:exit");
console.log(data);
});

};

到目前为止,我已经使用 child_processspawn = require('child_process').spawn('bash') 尝试了上述代码。

问题:有没有其他方法可以确保我可以触发脚本,并且如果返回提示并要求输入,我可以键入并输入,并且脚本将继续?

最佳答案

我从 Facebook 得到了这个使用技巧 cross-spawn ,而不是 child_process :

来自Robert Haritonov :

Use cross-spawn: spawn('bower', bowerCommand, {stdio:'inherit'}).on('close', function () {});

这工作得很好并且提供了我所需要的行为。

关于node.js - NodeJS : Make it possible for user input when running child_process,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28681901/

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