2017-07-07 2 views
0

Ich bin völlig neu in node.js, aber ich versuche es auf meiner persönlichen Website zu implementieren, so dass ich beginne, es zu lernen. Ich habe den Knoten-Server ausgeführt, aber ich versuche, das Routing mit express.js einzurichten. Alle meine Dateien sind typische statische Dateien .html, .js, .cs, .png, usw. Derzeit gibt mir die Route meine Indexseite auf der Home-Seite, die Goo ist. Wenn ich versuche, zum Index eines anderen Programms zu navigieren, erhalte ich nur die 404-Fehlerseite. Meine Dateistruktur ist wie folgt:Einrichten von Node.js mit express.js auf meiner 'Portfolio'-Site

Server.js package.json node_modules - Ansichten (Ordner) -index.html (File in Ansichten) --Projects (Ordner in Ansichten) -Index. html (File in Projects)

meine Server.js sieht aus wie

var express = require("express"); 
var app = express(); 
var router = express.Router(); 
var path = __dirname + '/views/'; 

router.use(function (req, res, next) { 
    console.log("/" + req.method); 
    next(); 
}); 

router.get("/", function (req, res) { 
    res.sendFile(path + "index.html"); 
}); 

router.get("/Projects", function (req, res) { 
    res.sendFile(path + "Projects/index.html"); 
}); 

app.use("/", router); 

/*app.use("*", function (req, res) { 
    res.sendFile(path + "404.html"); 
});*/ 

app.listen(3000, function() { 
    console.log("Live at Port 3000"); 
}); 

ich für die Vergangenheit haben gesucht ~ 18 Stunden bei verschiedenen Ressourcen, und ich bin fehlt nur etwas, was ich bin sicher. Meine aktuelle Idee des Problems ist die Navigation Links in der HTML, aber ich habe versucht, diese ohne Fortschritt zu ändern.

+1

Sie nicht wirklich brauchen Routen einzurichten nur statische Dateien zugreifen - Sie stellen sollten ein Pfad zur Verwendung als statisches Verzeichnis - siehe oben unter http://expressjs.com/en/api.html – jackarms

+0

Hi Jackarms, habe ich anfangs diese Methode benutzt. Nur mit 'app.use (express.static (path.join (__ dirname, 'public')));' aber muss ich keine index.html-Seite definieren? Ich habe das auch in den Optionen versucht, indem ich 'app.use (express.static (Pfad.join (___dirname, 'public'), ['index.html'])) verwendet habe;' aber wenn ich versuche meine Seite zu laden lädt anfangs, aber offensichtlich fehlt alle css/js und wenn ich die Seite aktualisieren, es wirft einen "Fehler: angeforderte URL konnte nicht abgerufen werden" – ovp

Antwort

0

Wenn Sie nur öffentliche Datei haben (wie html, css, ..) können Sie alles auf einen /public Ordner legen und diesen anstelle eines Routers hinzufügen.

app.use(express.static('public')) 

Doc: https://expressjs.com/en/starter/static-files.html

Jede Datei stehen dann zur Verfügung:

/public/my-folder/my-file.png>www.my-dmain.com/my-folder/my-file.png

+0

Hallo Arthur. Ich habe diese Lösung auch ausprobiert. Aus irgendeinem Grund, wenn ich versuche, zu "Projects" zu navigieren, bekomme ich eine "angeforderte URL konnte nicht abgerufen werden." Auf dem Apache-Server funktionierte das gut. In der Tat, wenn ich meine Webseite hart auffrische, wirft es auch einen angeforderten URL nicht abgerufenen Fehler. – ovp

+0

Speziell habe ich das getan, und jetzt meine Website gibt nur den Fehler "angeforderte Website ..." 'var express = erfordern (" express "); var path = require ('Pfad'); var app = express(); // var router = express.Router(); // var Pfad = __dirname + '/ views /'; App.Set ('Port', 3000); app.use (express.static (Pfad.join (__ dirname, 'public'))); var server = app.listen (app.get ('port'), funktion() { var port = server.address(). Port; console.log ('Magie passiert an port' + port); }); ' – ovp

+1

Es stellt sich heraus, das eigentliche Problem, das ich sah, war, dass meine Webhosts Site-Besitzer-Schnittstelle hatte ich einen Daemon und Proxy einschalten. Als ich meine Seite neu geladen habe, um die Änderungen zu sehen, löschte sich der Cache nicht. Ich habe den Proxy auf meiner server.js UND auf meiner aktuellen Webhosts Website geändert und es funktioniert jetzt. Vielen Dank – ovp

Verwandte Themen