1

私はクライアント コードをバンドルするために Parcel を使用しています。プロダクション ビルドを実行するたびに、ハッシュされた部分を含むファイルに JavaScript コードがバンドルされます。例: webrtc.27c30b71.js.

現時点では、クライアント コードをビルドするたびに、サーバー ファイルに移動し、新しく生成されたハッシュ名を反映するように手動でコードを変更する必要があります。

const handleRequest = (request: IncomingMessage, response: ServerResponse) => {
  // Render the single client html file for any request the HTTP server receives
  console.log('request received: ' + request.url);

  if(request.url === '/') {
    response.writeHead(200, {'Content-Type': 'text/html'});
    response.end(fs.readFileSync('dist/index.html'));
  } else if(request.url === '/webrtc.27c30b71.js')) {   <----------
    response.writeHead(200, {'Content-Type': 'application/javascript'});
    response.end(fs.readFileSync('dist/webrtc.27c30b71.js'));   <-----------
  }
};

これについてもっと良い方法があるはずです。クライアント コードを再構築するたびにサーバー コードを手動で変更する必要がないようにするにはどうすればよいですか?

4

1 に答える 1

0

これが私の解決策です。これに対処するためのベストプラクティスと見なされるかどうかはわかりませんが、うまくいき、より重要なことに進む必要があります.

const handleRequest = (request: IncomingMessage, response: ServerResponse) => {
  // Render the single client html file for any request the HTTP server receives
  console.log('request received: ' + request.url);

  if(request.url === '/') {
    response.writeHead(200, {'Content-Type': 'text/html'});
    response.end(fs.readFileSync('dist/index.html'));
  } else if(/(\/)(webrtc)(\.).*?(\.)(js)/.test(request.url as string)) { <----------
    response.writeHead(200, {'Content-Type': 'application/javascript'});
    response.end(fs.readFileSync(`dist${request.url}`));                 <---------
  }
};

正規表現テストを使用して、パスが一致するすべての要求を許可し、要求されたパス/webrtc.[hash].jsに一致するファイルの提供に進みます。

于 2019-01-03T18:07:52.420 に答える