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.