2013-06-20 5 views
15

Herokuを使用してNodeJsアプリケーションを配備しています。静的ファイルを扱う少しの問題以外はすべて正常に動作します。HerokuのNodejを配備すると、サブフォルダにある静的ファイルの配信に失敗する

私はそれは私がサブフォルダにある静的なファイルを提供しようとする場合を除いて正常に動作し、次のような構成

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

を持っています。

www.example.com/bar.js //これは、これは見つけることができません//ファイル/htdocs/bar.js

www.example.com/foo/bar.jsを提供しています /htdocs/foo/bar.js

ファイル私は自分のローカル環境上のすべてが正常に動作言うのを忘れて、Herokuので何かあるかもしれないが、私は理由を見つけることができません。誰かがこの問題を以前に持っていましたか?ソリューション?

ありがとうございます!

答えて

12

最後に解決策が見つかりました。

私はpackage.jsonにnpmバージョンを追加するだけで解決しました。

{ 
    "name": "bla", 
    "version": "0.0.1", 
    "dependencies": { 
     "express": "3.2.6" 
    }, 
    "engines": { 
     "node": "0.10.11", 
     "npm": "1.2.25" 
    } 
} 
+2

私の問題を解決していない、まだ研究中... –

10

明らかに、この質問の説明:Heroku(Cedar) + Node + Express + Jade Client-side javascript files in subdirectory work locally with foreman+curl but not when pushed to Herokuでは、__dirnameをHerokuで使用することはできません。

選択肢があるように思わ:

//あなたのweb.jsの上部に
process.env.PWD = process.cwd()

//次に
アプリ。使用(express.static(process.env.PWD + '/ htdocs'));

+0

Hey!私はすでにそれを発見し、働いていない...しかし、私は実際に今すぐ魂を見つけた!それはちょうど私のpackage.jsonだった、私はnpmのバージョンを置くことを忘れて、私はなぜか分からないが、これはすべてを解決する。ありがとう! – ius

+0

よろしいですか?良いニュース! –

+0

NPMの正しいバージョンをダウンロードするには、Herokuが必要と思うからです。そして、デフォルトでは非常に古いものをダウンロードするべきです。我々はその後何が起こったのだろうか分からない:) –

0

は、私はしばらくの間、これで苦労し、静的なフォルダとして(DIST /から)/ publicを使用してに戻す必要があった - 私の場合は、今

0

完璧に動作しますが、私は私のビルドのステップを持っていました実際には/publicフォルダを一掃してから、bundle.jsとbundle.cssに追加してください。

私の地元で私はそれを見ませんでしたが、それがヘロクに配備されたときに資産が欠落していました。

5

これらの解決策のいずれも機能しない場合は、my solutionをチェックしてください。

ディレクトリのサブディレクトリがGitリポジトリに追加されていることを確認してください。

+2

これは私のために働いた。 .gitignoreの/ distディレクトリを無視していました。私はそれを削除し、静的ファイルのリンクは期待どおりに働いた。 – mepler

+0

私と同じですが、今私はgitignoresのことを知っています:P – John

関連する問題