2016-08-12 10 views
0

webpackを使用してノードモジュール用のbundle.jsファイルを生成しようとしています。 bundle.jsファイルはクライアントブラウザで使用されます。Webpack + Express:サーバーから/ node_modulesの静的リソースを提供する方法

ここに問題があります。プロジェクトには、node_modulesディレクトリ内の静的ファイルを使用するいくつかの依存関係があります。例えば、静的なファイルの一つのパスは、私は、ブラウザでbundle.jsファイルを実行しようとすると、私はコピーした場合、私はこのエラー

GET http://localhost:3000/proto/Signature.proto 404 (Not Found) 

を取得

/node_modules/node-pogo-signature/lib/proto/Signature.proto

ですSignature.protoファイルをmy/publicフォルダに追加すると、バンドルはそれを見つけます。ただし、/ node_modulesから/ publicに静的ファイルを手動でコピーするのは面倒でメンテナンスが難しい場合があります。 より良い方法がありますか?

答えて

1
var myfile = require('./node_modules/node-pogo-signature/lib/proto/Signature.proto'); 

あなたはこれを表現使うなら、あなたは、例えば、ルートにそれを追加することがありますが、package.jsonファイルの内容を表示する方法である:あなただけで/ showfileコマンドを追加する必要があり

// create a new express server 
      var express  = require('express'); // We use express as web server http://expressjs.com 
      var app = express(); 
      // serve the files out of ./public as our main files 
       app.use(express.static(__dirname + '/public')); 
      // start server on the specified port and binding host 
      app.listen(appEnv.port, '0.0.0.0', function() { 
      console.log("server started"); 
      }); 

// Shows content of package.json 
var myfile = require('./package.json'); 

app.get('/showfile', function (req, res){ 
    if (debug) { 
     console.log("showfile received a request"); 
    }; 
    res.send(myfile); 
}); 

http://localhost:6006/showfile

+0

この場合、5つのファイルを追加する必要がある場合は、そのパスに5つの変数を作成し、res.send(myfile1)、res.send(myfile2)を追加します。 )、res.send(myfile3)、res.send(myfile4)、res.send(myfile5)をapp.getコールバック関数に追加しますか? –

+0

最初の部分については、はいそれぞれのファイルを別のvarにロードすることができます。 複数の 'res.send()'を1つのルートに追加しないでください。 ファイルを1つの文字列に連結し、 'res.send(concatenated)'のように送ることができます 最高の解決策は、各ファイルに別々のパスを定義することです。 – Netsmile

関連する問題