2016-07-11 6 views
2

Ich lerne, Express und Knoten im Allgemeinen zu verwenden, und ich realisiere, dass ich viele grundlegende Kenntnisse vermissen könnte. Im Folgenden finden Sie den Code zum Starten eines Servers zum Bereitstellen statischer Dateien. Nach meinem Verständnis sollte die Konsole beim Start die Serveradresse und die Portnummer ausgeben.Learning Node Express, warum die Konsole "localhost" nicht ausgibt?

var express = require('express'); 
var app = express(); 

app.use(express.static('resources')); 
app.use(express.static(__dirname)); 

app.get('/', function (req, res) { 
    res.sendFile(__dirname + "/" + "index.html"); 
}) 

var server = app.listen(3000, function() { 

    var host = server.address().address 
    var port = server.address().port 

    console.log("Server listening at http://%s:%s", host, port) 

}) 

Ich erwarte 'Server hört auf http://localhost:3000 „' zu sehen, aber stattdessen erhalte ich: 'Server bei http://:::3000 hören'

Kann mir jemand erklären, was das bedeutet bitte Dank

Antwort

2

See die Dokumentation auf net.Server::address().

Es sagt wahrscheinlich nicht localhost, weil Sie wha nicht angegeben haben Die Adresse, auf die Sie gewartet haben.

Standardmäßig gibt es keine spezifische Adresse, da eingehende Anfragen auf dem Port unabhängig von der Adresse, an die sie gesendet wurden, akzeptiert werden.

Beispiele für verschiedene Adressen, die akzeptiert werden können, sind localhost, 127.0.0.1, 192.168.1.72 oder wenn Sie Ihren Server über das Netzwerk weiterleiten, könnte dies Ihre globale IP-Adresse sein. Wenn Sie eine Adresse explizit angeben, werden eingehende Anfragen von allen anderen Adressen abgelehnt.

-2

Klingt wie die Gefahren der asynchronen Ausführung von Code. Sie definieren den Host und den Port und rufen sie sofort in der Konsolenprotokollanweisung auf. NodeJS führt die Protokollanweisung vor der Initialisierung aus. Versuchen Sie, die Protokollanweisung außerhalb der Funktion app.listen zu drucken.

+1

danke ich könnte falsch sein aber sollte es nicht das Gegenteil sein? app.listen ist Trigger und erst nachdem es fertig ist, wird der anonyme Callback aufgerufen (der auf die Konsole druckt, und zu diesem Zeitpunkt sollte der Server bereit sein) – Ziqi

Verwandte Themen