gpt4 book ai didi

javascript - 如何在 Node 服务器中提供带有哈希名称的捆绑 js 文件?

转载 作者:太空宇宙 更新时间:2023-11-04 01:37:41 24 4
gpt4 key购买 nike

我使用 Parcel 来捆绑我的客户端代码,每次运行生产构建时,它都会将 javascript 代码捆绑到带有哈希部分的文件中。例如:webrtc.27c30b71.js

目前,每次构建客户端代码时,我都必须进入服务器文件并手动更改代码以反射(reflect)新生成的哈希名称。

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')); <-----------
}
};

必须有更好的方法来解决这个问题。如何才能使我不必每次重建客户端代码时都手动修改服务器代码?

最佳答案

这是我的解决方案,我不知道它是否被认为是处理这个问题的最佳实践,但它有效,我需要继续处理更重要的事情。

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 匹配的任何请求,然后继续提供与请求的路径匹配的文件。

关于javascript - 如何在 Node 服务器中提供带有哈希名称的捆绑 js 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54017201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com