![](/img/trans.png)
[英]running console application from nodejs app using child_process
[英]NodeJS: Make it possible for user input when running child_process
我正在嘗試創建一個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_process
和spawn = require('child_process').spawn('bash')
嘗試了上面的代碼。
問題 :還有其他方法可以確保我可以觸發腳本,並且如果返回提示並要求輸入,可以鍵入並輸入,腳本將繼續嗎?
從Facebook我得到了使用cross-spawn
而不是child_process
:
從羅伯特·哈里托諾夫 ( Robert Haritonov) :
使用交叉生成:
spawn('bower', bowerCommand, {stdio:'inherit'}).on('close', function () {});
這工作得很好,並提供了我所需要的行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.