Node.js console.log () protokolliert nichts


91

Zum ersten Mal node.js ausprobieren. Richten Sie den Knoten ein und richten Sie die Beispiel-App auf der Website nodejs.org ein. Kann den Server gut starten, console.log()protokolliert aber eigentlich nichts. Versuchte die Javascript-Konsole in Chrome, Firefox und Safari - nichts wird im Protokoll angezeigt. Auch die Konsole auf meinem Mac wurde nur auf Tritte überprüft, es war auch nichts da. Was vermisse ich?

(Hier ist der Beispielcode, der funktioniert, aber nichts protokolliert.)

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');

Wie läuft diese App? Welche Umgebung? Wenn es sich auf der Konsole Ihres lokalen Computers befindet, sollten dort die Protokolle der App angezeigt werden. Wenn Sie eine gehostete Lösung verwenden, bieten diese normalerweise eine Möglichkeit, die Protokolle über eine Weboberfläche und über das Befehlszeilen-API-Tool anzuzeigen.
Treffynnon

Ich kann dies auf meinem Computer nicht replizieren. Das funktioniert gut. Welche Version laufen Sie?
Sean Hill

3
console.log () gibt die Zeichenfolgen in das Terminalfenster (die Befehlszeilenschnittstelle, in der die Anwendung ausgeführt wird) aus
Pastor Bones

Wie haben Sie den Server gestartet, ohne die Ausgabe in der Konsole zu bemerken?
RobertPitt

2
Du hast keine Ahnung, wie dumm ich mich darüber fühle :).
Chrismanderson

Antworten:


156

In einem node.js-Server werden console.logAusgaben im Terminalfenster und nicht im Konsolenfenster des Browsers ausgegeben.

Wie läuft dein Server? Sie sollten die Ausgabe direkt nach dem Start sehen.


89
Ich würde meine eigene Frage ablehnen, wenn ich könnte. Ich kann nicht glauben, dass ich diese Verbindung nicht hergestellt habe.
Chrismanderson

4
Jeder, der mit nodejs starrt, erwartet dasselbe ... Die Konsolenausgabe sollte sowohl an der Konsole des Browsers als auch am Terminal protokolliert werden.
Brad Parks

13
@Brad Nein sollte es nicht. Nicht alle Knotenprogramme sind Webserver, und selbst wenn dies der Fall wäre, würde dies keinen Sinn ergeben.
David

4
@David - Ich verstehe Ihren Standpunkt ... Ich weiß, dass normalerweise serverseitiges Material niemals direkt im Client-Protokoll protokolliert wird ... aber node.js ist Javascript, was die Leute dazu bringt, bis zu einem gewissen Grad clientseitig zu denken ... und seitdem Die Protokollierungsmethode hat genau den gleichen Namen wie die clientseitige "console.log". Dann denke ich, dass einige Leute denken würden, dass sie sich möglicherweise in der Browserkonsole protokolliert.
Brad Parks

@BradParks, @david Ja, ich habe auch nach der Ausgabe in der Browserkonsole über die Verwendung von gesucht console.log(), dann habe ich diese Frage / Antwort erreicht.
Sithu

9

Dies kann für jeden verwirrend sein, der nodejs zum ersten Mal verwendet. Es ist tatsächlich möglich, die Ausgabe Ihrer Knotenkonsole an die Browserkonsole weiterzuleiten. Schauen Sie sich den Connect-Browser-Logger auf Github an

UPDATE: Wie von Yan hervorgehoben, scheint der Connect-Browser-Logger nicht mehr zu funktionieren. Ich würde NodeMonkey wie hier beschrieben empfehlen: Ausgabe von Node.js an die Chrome-Konsole


Das Github - Projekt existiert nicht mehr
yan

5
Auch dies geht wahrscheinlich den falschen Weg. Das Aktivieren des Knotenservers in der Browserkonsole ist nur eine seltsame Übung. Ich kann mir null Mal vorstellen, wo dies wirklich nützlich wäre. Um ganz ehrlich zu sein, klingt der Versuch, sich in der Konsole vom Server zum Client anzumelden, nach einem Mangel an Verständnis dafür, wie Software erstellt werden sollte. Ich meine damit nicht, dass es sich nur um ein grundlegendes Konzept zur Trennung von Anliegen handelt. Nur weil beide Javascript verwenden, heißt das nicht, dass sie dieselbe UMWELT sind. Da gibt es einen sehr wichtigen Unterschied.
Dudewad

6

Mit modern --inspect with node wird die console.log erfasst und an den Browser weitergeleitet.

node --inspect myApp.js

oder um die frühe Protokollierung zu erfassen --inspect-brk kann verwendet werden, um das Programm in der ersten Zeile des ersten Moduls zu stoppen ...

Knoten --inspect-brk myApp.js

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.