我正在使用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')); <-----------
}
};
必须有一个更好的方法来解决这个问题。如何做到这一点,以使我不必在每次重建客户端代码时都手动修改服务器代码?
答案 0 :(得分: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
的任何请求,然后继续处理与请求的路径匹配的文件。