2017-10-26 4 views
0

Ich bin mir sicher, dass dies ein Problem ist aufgrund meines begrenzten Verständnisses, wie EJS und Partials funktionieren, aber ich bin konfrontiert mit scheinbar bizarrem Verhalten in meiner Node.js App. Ich bin mit EJS als mein Template-Engine und meine grundlegende Verzeichnisstruktur ist wie folgt:Node.js EJS Partials

- public 
----- css 
----- js 
---------- main.js 
- views 
----- index.ejs 
----- about.ejs 
----- login.ejs 
----- admin 
---------- user.ejs 
---------- categories.ejs 
----- _layouts 
---------- footer.ejs 
---------- head.ejs 
---------- header.ejs 
---------- nav.ejs 
---------- scripts.ejs 
- package.json 
- app.js 

Full Directory Structure

Mein index.ejs ist einfach:

<% include _layouts/nav %> 
<%- content %> 
<% include _layouts/footer %> 

Darüber hinaus können die nav.ejs umfasst Die head.ejs und die footer.ejs enthalten scripts.ejs.

Jetzt ist das seltsame Verhalten, dass auf dem index.ejs alles perfekt funktioniert und main.js "finden" kann. Wenn ich jedoch zu "about.ejs" oder "login.ejs" oder anderswo als "index.ejs" gehe, kann main.js nicht gefunden werden. Wenn ich den main.js-Code in diese Dateien "festcode", funktioniert alles wie erwartet. Ich weiß nicht, ob es ein Problem mit der Verschachtelung von Includes mit EJS-Dateien ist oder ob es ein relatives/absolutes Links-Problem ist, aber es hat mir in den letzten paar Tagen Kummer bereitet. Irgendwelche Tipps oder Ratschläge sind willkommen! Vielen Dank.

+0

Wie nehmen Sie 'main.js' auf? Sehen Sie Fehler in Ihrer Browser-Konsole? Verwenden die Anfragen im Abschnitt "Netzwerk" die richtigen URLs? – skirtle

+0

Ich schließe main.js als Teil der Datei scripts.ejs ein.

+0

Was ist mit meinen anderen Fragen? – skirtle

Antwort

0

Fügen Sie diese auf Ihre app.js und überprüfen let path = require('path'); app.use(express.static(path.join(__dirname, 'public')));

Ihre main.js Datei für den Zugriff auf öffentliche Ordner nicht in der Lage ist.

+0

Ich denke, dass es tatsächlich behoben. Ich legte den Öffentlichen Ordner mit der folgenden Methode fest: app.use (express.static (path.resolve ('./ public'))); Aber wenn ich es über Ihre Methode eingestellt habe, hat es behoben. Danke für die Hilfe! –

+0

Willkommen, bitte akzeptieren Sie die Antwort –