2016-07-25 11 views
0

ありません、私は2つの異なるビューのレンダリング急行ルータとヒスイ/パグテンプレートを使用して、ファイルアップロードフォーム、から構成されたプロジェクトを持っています。のWebPACK /ガルプ/ Expressのエラー:そのようなファイルやディレクトリは

私はすべてのjavacriptファイルを1つ(backend.js)にコンパイルし、そのbackend.jsファイルを3つの.pugファイルとともに別のディレクトリにコンパイルしようとしています。

のWebPACKは、プロジェクトに含まれているのjsファイルをコンパイルした後、それはビルド/ backend.jsに配置します: project-after-webpack

そして最後に、ゴクゴクは、別のフォルダにあるパグテンプレートとともに、backend.jsファイルを受け取りプロジェクト、およびmain.jsbackend.jsをコンパイルし、この構造に配置して、HTMLファイルにすべての私のパグファイルを回す: project-after-gulp

プロジェクトの残りの部分は、ルートディレクトリにあります。

javascriptファイルの1つは、特定のhttp要求時にビューを表示する役割を果たします。これは私が困っているところです。 gulpとwebpackがなければ、私はres.render()を使って.pugビューを問題なくレンダリングすることができます。しかし、私はgulpとwebpackを使用すると "no such file or directory"というエラーが出ます。これは、form.pugファイルをレンダリングしようとしています。そのファイルはform.htmlになっています。

router.get('/', function list (req, res, next) { //res.render('submissions/form.pug' res.sendFile(path.join(__dirname+'build/submissions/form.html'), { submission: {}, action: 'Add' }); });

とコンソールを使用すると、ファイルが実際に存在していることがわかりますにもかかわらず、ENOENT: no such file or directory, stat '/form.html'私に言っています。

私は、これは単なる不可能な場合.sendFile機能を使用すると、私は欠けている何かを必要とする場合、または私のパスは、間違っているかはわかりません。どんな助けもありがたいです。

答えて

0

path.join()see the docs here)の使用は、すべてのオペレーティングシステムに対応したパス文字列を作成することだと思います。

それはそうのような引数として、すべてのパスの断片を取ります

router.get('/', function list (req, res, next) { 
     //res.render('submissions/form.pug' 
     res.sendFile(path.join(__dirname, 'build', 'submissions', 'form.html'), { 
      submission: {}, 
      action: 'Add' 
     }); 
    }); 

たぶん/はそう__dirnamebuild間行方不明になりましたか?

+0

ただ、まだそのようなファイルが – Lanre

+0

は、ソースコードの行にエラーに対応してい存在していない私に告げるエラーを取得し、これを試してみましたか?あなたはあなたの質問に完全な痕跡を提供できますか?コードが指し示されている場合、その関数でない場合は? – Pandaiolo

+0

これは完全なエラーです: '{[エラー:ENOENT:そのようなファイルやディレクトリ、stat '/build/submissions/form.html'] errno:-2、 コード: 'ENOENT'、 syscall: 'stat '、 パス:' /build/submissions/form.html '、 公開:偽、 statusCode:404、 ステータス:404、 レスポンス:' ENOENT:そのようなファイルまたはディレクトリはありません。 '/ build/submissions /form.html \ ''} ' – Lanre

関連する問題