2014-10-13 12 views
7

Ich möchte den Benutzer zur Eingabe auffordern, lassen Sie den Benutzer mehrere Zeilen Text eingeben, drücken Sie die Eingabetaste zwischen jeder Zeile, dann beenden Sie die Eingabe durch Drücken von STRG + D oder etwas dergleichen.Node.js mehrzeiliger Eingang

Mit "Tastendruck" kann ich die EOF abfangen, aber ich würde alle Echo, Backspace-Handling, Terminal Escape-Sequenzen usw. manuell behandeln. Es wäre viel besser, wenn ich "readline" verwenden könnte, aber irgendwie CTRL + D (EOF) mit "keypress" abfängt, aber ich bin mir nicht sicher, wie ich das machen würde.

Antwort

10

können Sie die line und close Ereignisse verwenden:

var readline = require('readline'); 

var input = []; 

var rl = readline.createInterface({ 
    input: process.stdin, 
    output: process.stdout 
}); 

rl.prompt(); 

rl.on('line', function (cmd) { 

    input.push(cmd); 
}); 

rl.on('close', function (cmd) { 

    console.log(input.join('\n')); 
    process.exit(0); 
});