2013-08-06 19 views
34

Meine app Struktur ist:Wie mit __dirname in der Ordnerhierarchie gehen

/app 
    /css 
    /js 
    .. 
/script 
    /server.js 

Ich versuche __dirname zu verwenden, um/app Ordner zu zeigen, wenn

app.use(express.static(__dirname + '/app')); 

ich mit wirklich nicht wissen, was Sie im Internet suchen, bitte helfen Sie.

+1

Warum der Downvote? Ich denke, diese Frage ist legitim. –

Antwort

32

, wenn Sie in server.js sind, dann meinen Sie

app.use(express.static(__dirname + '/../app')); 
+3

Ich bin in express.js Datei und '/../' übersetzt nicht, es zeigt 'current_directory_path/../ app' dies als Ergebnis und kann die Datei nicht finden ... irgendwelche Ideen warum? – Babar

+0

Worauf bist du? –

+0

Ich bin auf Ubuntu, die gleiche Syntax funktioniert an anderen Orten, aber es funktioniert nicht innerhalb der express.js Datei. – Babar

0

__dirname nur eine Zeichenfolge ist, können Sie String-Manipulation auf es tun.

app.use(express.static(__dirname.substring(0, __dirname.indexOf("\\routes") + '\app')); 

werde ich ehrlich sein, habe ich es für einen anderen Zweck:

res.sendFile('./uploads/' + req.params.id + '/' + req.params.filename, {"root": __dirname.substring(0, __dirname.indexOf("\\routes"))}); 

So können Sie mit dem/arbeiten müssen vs ein bisschen \.

12

Sie können path Modul dafür verwenden.

Das Pfadmodul enthält Dienstprogramme zum Arbeiten mit Datei- und Verzeichnispfaden.

const path = require('path'); 

app.use(express.static(path.join(__dirname, '..', 'app'))); 
+0

Bitte fügen Sie eine kurze Erklärung zu Ihrer Antwort hinzu. –

0

Ich habe eine einfache Lösung, aber es funktioniert. in Ihrem Skript Start Server js Sie können folgende hinzufügen:

var publicFolder = __dirname + '/public/'; 
config.public_folder = publicFolder; 

Dann, wenn Sie Zugriff auf diesen Ordner sonst noch brauchen, wo in den Code in Unterordnern oder Routen, müssen Sie den öffentlichen Ordner Variable injizieren. und verwende es so:

res.sendFile(config.public_folder+'unsubscribed-success.html'); 
Verwandte Themen