2016-03-22 10 views
1

my folder structureExpress.js Pfad Problem mit Lenker

Die Sache ist. Im Ordner "app" befindet sich die Logik meines Knotens und dort befindet sich der Ordner views mit Vorlagen für Lenker (Express-Lenker).

Auf der „config“ -Ordner, dann ist es eine Express.js Datei, in der Express-Paket tatsächlich erforderlich ist, und auch, wo ich die App Engine und Variablen gesetzt:

line 1: app.engine('handlebars', handlebars.engine); 
line 2: app.set('views', path.join(__dirname, '../app/views'); 
line 3: app.set('view engine', 'handlebars'); 

Die server.js Datei bedarf der ausdrücklichen. js-Datei aus dem Konfigurationsordner und das war's.

Wenn ich den Ordner "Ansichten" auf der Wurzel (und Zeile 2 ist ausgeschlossen), alles funktioniert gut, aber wenn ich Zeile 2 und die Ordnerstruktur im Bild gezeigt, bekomme ich immer einen Fehler ENOENT: "keine solche Datei oder Verzeichnis .."

Es spielt keine Rolle, welches Format ich versuche, in Zeile 2 zu verwenden, wenn versucht wird, den richtigen Pfad für den "views" Ordner anzugeben, die Fehlermeldung sagt immer die Datei kann ' t gefunden werden und die angezeigte URL IMMER den Ordner "app" (es zeigt jeden Pfad, den ich versuche, aber es lässt den App-Teil verschwinden). Es ist egal, was ich mache, aber Node scheint diesen App-Ordner einfach zu ignorieren. Es ist so, als könnte ich nicht darauf zugreifen.

Ex: 
1) path.join(__dirname, "../app/views"); > ENOENT "C:\root\views\layouts\main.handlebars". 
2) path.join(__dirname, "../xapp/views"); > Failed lookup view "C:\root\xapp\views" 

Note how the "app" portion of the first option disapears from the url !! 

Ich gehe davon aus das ein „Weg“ Problem ist, und ich kann nicht verstehen, was los ist. Kann mir bitte jemand weiterhelfen?

Wenn jemand weiß, wo ich über die Logik hinter dieser "Pfad-Sache" lesen könnte, wäre ich dankbar. Zum Beispiel: Wenn ich nur "__dirname" in Zeile 2 verwende, lautet die Fehlermeldung, dass der Knoten "fehlgeschlagene Suche" im Verzeichnis "views:" path_string/config "... ist es besser (ich bin ein Neuling), aber ich glaube u Jungs, viel erfahrener als ich, vielleicht verstehen, was ich rede.

Vielen Dank im Voraus für Ihre Hilfe.

Vittorio

+0

Ist so etwas wie 'app.set ('Ansichten', path.join (__ dirname‘ ../ app/views');? 'Arbeit –

+0

Danke Steve, aber nein, tut es nicht Ich habe den Namen meines "App" -Orders in "mapp" geändert. Folgendes passiert: A) path.join (__ Verzeichnisname, '../app/views)> Fehler beim Suchen der Ansicht ...' C: \ web_app \ app \ views ' B) pfad.join (__ dirname,' ../mapp/views)> ENOENT ... 'C: \ web_app \ ansichten \ layouts \ main.handlebars' .. beachten Sie, dass auf Option B: Das Mapp-Verzeichnis wird in der Fehlermeldung nicht angezeigt: Es sollte "C: \ web_app \ mapp \ views \ layouts \ main.handlebars" lauten, stattdessen wird jedoch "C: \ web_app \ views \ layo" angezeigt uts \ main.handlebars '. > Mapp ist verschwunden. –

+0

sollte nicht in den node_modules ausgedrückt werden? –

Antwort

1

Gelöst: Das Problem war mit Express-Lenker-Paket.Nach der Verwendung der "create" -Methode sollte ich LayoutsDir angegeben haben:

require('express-handlebars') 
     .create({ 
       layoutsDir:path.join(__dirname, '../whateverpath/views/layouts') , 
       defaultLayout: 'main' 
      }); 

Danach war das Problem gelöst.

Danke für diejenigen, die versucht haben zu helfen.

Bye