2016-04-16 4 views
0

Wenn ich die HTML-Seite über den Node-Server starte (d. H. Im Browser zu localhost: 3000 navigiere), wird nichts auf die Konsole gedruckt, wie ich aufgrund der Javascript-Datei der Seite erwarten würde (siehe unten). Wenn ich die HTML-Datei jedoch direkt aus dem Ordner öffne, wird "Hi" wie erwartet auf die Konsole gedruckt.Warum funktioniert meine Seite nicht, wenn ich meinen HTML-Code über einen Knotenserver diene?

Hier ist der Knoten Server Javascript:

var http = require('http'); 
var fs = require('fs'); 

fs.readFile('./index.html', function(err, html) { 
    if (err) { 
     throw err; 
    } 
    http.createServer(function (request, response) { 
     response.statusCode = 200; 
     response.setHeader('Content-Type', 'text/html'); 
     response.write(html); 
     response.end(); 
    }).listen(3000); 
    console.log('Server is running!!'); 
}) 

Hier ist die Seite HTML:

<!DOCTYPE html> 
<html> 
    <head></head> 
    <body> 
     <script type="text/javascript" src="jquery-1.12.1.js"></script> 
     <script type="text/javascript" src="page.js"></script> 
    </body> 
</html> 

Hier ist die Seite Javascript:

$(document).ready(function() { 
    console.log("Hi") 
}); 
+1

Wie wird page.js geladen? Überprüfen Sie Ihre Netzwerkregisterkarte Ihres Browsers. Es wird wahrscheinlich nicht geladen. Sie haben keine Route für statische Assets oder speziell für die page.js, richtig? – Cymen

+0

Die Netzwerkkarte (Firefox) sagt, dass sie mit einem Status von 200 geladen wird. Nicht sicher, was Sie mit "Route für statische Assets" meinen, aber page.js ist über das Tag ' – user212514

Antwort

0

Sie müssen von der angeforderten URL verzweigen in dein Server. Im Moment, wenn Ihr Browser die Seite lädt, wird der Inhalt von index.html angezeigt. Wenn es jedoch page.js anfordert, erhält es den Inhalt von index.html und nicht den Inhalt von page.js. Wie man routet, was bedeutet, zu sehen, was angefordert wurde und auf die Anfrage zu reagieren, siehe Routing http requests through Node.js.

Sie können das Vanilla HTTP-Modul verwenden und tun es so oder Sie können ein Framework wie KoaJS oder Express, die Helfer für das Routing und andere Dinge haben. Was angemessen ist, hängt von Ihren Bedürfnissen und Wünschen ab (für reines Lernen ist Vanille super).

Verwandte Themen