2013-08-06 5 views
34

マイアプリの構造は次のとおりです。がどのようにフォルダ階層に__dirnameを使って行くこと

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

を使用しているとき、私は私は本当にいけない/ appフォルダを指すように__dirnameを使用しようとしている

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

ウェブで何を検索するかを知ってください、助けてください。あなたはserver.jsになら

+1

なぜdownvoteですか?私はこの質問が合法だと思う。 –

答えて

32

、あなたは

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

私はexpress.jsファイルにあり、 '/../'は翻訳されません。 'current_directory_path /../ app'が結果として表示され、ファイルを見つけることができません。 – Babar

+0

あなたはどなたですか? –

+0

私はUbuntuにありますが、同じ構文が他の場所で動作していますが、express.jsファイル内では動作しません。 – Babar

0

__dirnameは単なる文字列であることを意味し、あなたはそれの上に文字列操作を行うことができます。

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

私は正直になり、私は別の目的のためにそれを使用する:

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

ですから、少し\ VS /と仕事をしなければならないことがあります。

12

pathモジュールを使用できます。

パスモジュールは、ファイルパスとディレクトリパスを扱うユーティリティを提供します。

const path = require('path'); 

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

あなたの答えに簡単な説明を加えてください。 –

0

私はシンプルなソリューションをしましたが、それは動作します。スタートアップサーバスクリプトJS には、次の追加することができます。

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

を次にサブフォルダやルートのコードでは、パブリックフォルダの変数を挿入する必要がどこにあるか他にこのフォルダへのアクセスが必要なとき。このように使用してください:

res.sendFile(config.public_folder+'unsubscribed-success.html'); 
関連する問題