2016-04-01 12 views
1

In meinem Node Express js Projekt ich einen HTTP-Server (dh .. http.createServer (app)) .. (uuisng bodyParser, morgan , serve-favicon, express-jwt middilwares) .. Wenn der Benutzer eine beliebige Zeile in der Eingabeaufforderung (mit der Maus, Befehl Titel auch mit dem Präfix "Auswählen") auswählen, bedient der Express-HTTP-Server keine weitere Anfrage bis Ich drücke eine Eingabe (Return-Taste), um die Auswahl abzubrechen/zu beenden.Knoten Js liefert keine Anfrage, wenn Benutzer eine Zeichenfolge in der Eingabeaufforderung auswählt

ich keinen „Readline-“ -Modul bin mit ...

Wem mir Bitte teilen Sie Ihre Meinung zu diesen Themen ..

Antwort

2

IMHO, ist es wahrscheinlich, weil das I/O der Eingabeaufforderung (Konsole?) sind nicht asynchron. Sie müssen mit der asynchronen Vorgehensweise umgehen, was Sie im Knoten tun möchten. Es bedeutet, dass Teile des Codes (wahrscheinlich) blockieren.

Einige Erklärungen hier auf another SO post about that. Laut der documentation about the console here "sollte es ein sehr seltenes Vorkommnis sein, dass ein Schreibblock zwar blockt, aber es ist möglich."

Da Knoten mit niedrigem C-Level erstellt wird, ist es möglich, dass das System auf eine Validierung wartet, nachdem Sie etwas in die Eingabeaufforderung geschrieben haben.

Ich hatte ein ähnliches Problem mit Protokollen.

+1

Wenn Sie versuchen, eine Art "Datenbankabfrage" -System zu erstellen, ist es vielleicht besser, die Eingabeaufforderung nicht zu verwenden und ein ORM zu bevorzugen (wie Sequelize zum Beispiel, wenn es SQL ist). Sie können einen einfachen Wrapper für die Datenbankverbindung erstellen und die Abfrage (einige Selects?) Einfach als Parameter einer gesicherten Funktion ausführen. Sie haben ein paar nette Tutorials mit MongoDB, [das ist ein sehr gutes Tutorial] (https://scotch.io/tutorials/build-a-restful-api-using-node-and-express-4). – Aethyn

Verwandte Themen