Wie erhalte ich Konsoleneingaben in Javascript?


73

Ich verwende derzeit Spidermonkey, um meinen JavaScript-Code auszuführen. Ich frage mich, ob es eine Funktion gibt, mit der Eingaben von der Konsole abgerufen werden können, ähnlich wie Python dies tut:

var = raw_input()  

Oder in C ++:

std::cin >> var;

Ich habe mich umgesehen und alles, was ich bisher gefunden habe, ist, wie man über die Funktionen prompt () und verify () Eingaben vom Browser erhält.

Antworten:



15

Verwenden Sie in einfachem JavaScript einfach response = readline()nach dem Drucken einer Eingabeaufforderung.

In Node.js müssen Sie das Readline-Modul verwenden :const readline = require('readline')


10
`var x = readline (); ^ TypeError: readline ist keine Funktion `nach dem Hinzufügen von require oben in der Datei
anon58192932

1
Hatte auch das gleiche Problem.
Devin Haslam

1
Das ist seltsamer als je zuvor.
Machado

2
readline funktioniert im Knoten nicht gleich. Sie benötigen ungefähr Folgendes: const readline = require ('readline'). createInterface ({Eingabe: process.stdin, Ausgabe: process.stdout}) readline.question ("Wie heißt du?", name => {console.log ( Hello ${name}); readline.close ();});
kDar

1
@kDar Ich mache lieber name => {readline.close (); console.log (Name); } In meinem Fall zeigt Ihre Version während der Eingabe keine Eingabe an. Wie auch immer, danke für deinen Kommentar
Marco M. von Hagen

14

Wie Sie bereits erwähnt haben, promptfunktioniert dies für Browser bis zum IE:

var answer = prompt('question', 'defaultAnswer');

Eingabeaufforderung im IE

Für Node.js> v7.6 können Sie console-read-writeeinen Wrapper um das Low-Level- readlineModul verwenden:

const io = require('console-read-write');

async function main() {
  // Simple readline scenario
  io.write('I will echo whatever you write!');
  io.write(await io.read());

  // Simple question scenario
  io.write(`hello ${await io.ask('Who are you?')}!`);

  // Since you are not blocking the IO, you can go wild with while loops!
  let saidHi = false;
  while (!saidHi) {
    io.write('Say hi or I will repeat...');
    saidHi = await io.read() === 'hi';
  }

  io.write('Thanks! Now you may leave.');
}

main();
// I will echo whatever you write!
// > ok
// ok
// Who are you? someone
// hello someone!
// Say hi or I will repeat...
// > no
// Say hi or I will repeat...
// > ok
// Say hi or I will repeat...
// > hi
// Thanks! Now you may leave.

Offenlegung Ich bin Autor und Betreuer von Konsolen-Lese- / Schreibzugriffen

Für SpiderMonkey einfach, readlinewie von @MooGoo und @Zaz vorgeschlagen .


0

Sie können so etwas wie versuchen process.argv, wenn Sie node.jsdas Programm ausführen.
console.log(process.argv)=> Würde ein Array drucken, das enthält

[                                                                                                                                                                                          
  '/usr/bin/node',                                                                                                                                                                         
  '/home/user/path/filename.js',                                                                                                                                            
  'your_input'                                                                                                                                                                                   
]

Sie erhalten die vom Benutzer bereitgestellte Eingabe über den Array-Index, dh, console.log(process.argv[3])dies sollte Ihnen die Eingabe liefern, die Sie speichern können.


Beispiel:

var somevariable = process.argv[3]; // input one
var somevariable2 = process.argv[4]; // input two

console.log(somevariable);
console.log(somevariable2);

Wenn Sie ein Befehlszeilenprogramm erstellen, sind die yargs des npm-Pakets sehr hilfreich.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.