2017-12-11 3 views
-1

Nach dem Einrichten einiger Dateien (index.html und ws.js [welche den Server einrichtet]), kann ich keine zusätzlichen JS-Dateien, die meine Website verwendet, hinzufügen . Ich habe versucht, require() die zusätzlichen Dateien, aber ohne Erfolg. Wenn ich node ws.js ausführen, wird der Server hochgefahren und index.html wird angezeigt, aber die Schaltflächen (mit der in run.js definierten Funktionalität) sagen "Ersetzen ist nicht undefiniert". Ich betreibe den Server über den Befehl node ws.js und auf die Website über die URL localhost:8080 zugreifen. Ich hatte ursprünglich keine Modulexporte, und es funktionierte immer noch nicht. Ich habe all das zum Laufen gebracht, wenn ich einfach auf index.html doppelklicke, also weiß ich, dass es lokal funktioniert (wenn das der richtige Begriff ist).Website funktioniert lokal, aber nicht auf NodeJS Webserver, Anfänger

Hier ist meine ws.js Datei:

var http = require("http"); 
var fs = require("fs"); 
var events = require("events"); 
var serveStatic = require("serve-static"); 
var eventEmitter = new events.EventEmitter(); 

var run = require("./run.js"); 
run(); 

http.createServer(function (request, response) { 
    fs.readFile('index.html', function(err, data) { 
     // Send the HTTP header 
     // HTTP Status: 200 : OK 
     // Content Type: text/plain 
     response.writeHead(200, {'Content-Type': 'text/html'}); 

     response.write(data); 
     return response.end(); 
    }); 
}).listen(8080); 

// Console will print the message 
console.log('Server running at http://127.0.0.1:8080/'); 
console.log(__filename); 
console.log(__dirname); 

(function() { 
    function hi() { 
     alert("This is working!"); 
    } 
})(); 

Hier ist meine run.js Datei:

function run() { 
    function testerClicked() { 
     alert("Tester has been clicked!"); 
    } 

    function replace() { 
     var temp = (document.getElementById("tester").innerHTML === "This is a button." ? "This button has been pressed!" : "This is a button."); 
     document.getElementById("tester").innerHTML = temp; 
    } 
} 

module.exports = run; 

Das ist die Linie, wo ich die Funktion in HTML bin Aufruf:

<button id='tester' onclick="replace()">This is a button.</button> 

Sorry, wenn dies eine grundlegende Frage ist. Ich lerne gerade über Server und JavaScript/HTML/CSS.

+0

Es scheint, dass Sie Ihre HTML-Datei bereitstellen, aber dienen Sie Ihre zusätzlichen Javascript/Asset-Dateien? – FrankerZ

+0

Ich verlinke die JavaScript-Dateien in meiner index.html. Muss das "Serving" in ws.js durchgeführt werden? – musikreck

+0

Wenn Sie auf eine Webseite gehen, antwortet die Datei index.html auf Ihrem Knotenserver und lädt diese Datei herunter. Wenn Sie in Ihrer index.html '' haben, wird der Browser eine weitere Anfrage an den Server stellen, um 'bundle.js' anzufordern (was Ihre ws.js-Datei nicht behandelt). Probieren Sie [this] (https://github.com/expressjs/serve-static) aus, um statische Inhalte zu liefern. – FrankerZ

Antwort

1

Sie führen derzeit nichts von Ihrem node.js-Server außer Ihrer index.html-Datei aus.

Wenn Sie auf eine Webseite gehen, antwortet die Datei index.html auf Ihrem Node-Server und lädt diese Datei herunter. Wenn Sie in Ihrer index.html <script src="bundle.js"></script> haben, wird der Browser eine weitere Anfrage an den Server stellen, um bundle.js anzufordern (was Ihre ws.js-Datei nicht behandelt). Probieren Sie this für die Bereitstellung von statischen Inhalten aus.

+0

Arbeitete wie ein Charme! Der Link war besonders nützlich :) – musikreck

Verwandte Themen