首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Node服务器上提供带哈希名称的捆绑js文件?

如何在Node服务器上提供带哈希名称的捆绑js文件?
EN

Stack Overflow用户
提问于 2019-01-03 14:17:05
回答 1查看 115关注 0票数 1

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

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

代码语言:javascript
代码运行次数: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(request.url === '/webrtc.27c30b71.js')) {   <----------
    response.writeHead(200, {'Content-Type': 'application/javascript'});
    response.end(fs.readFileSync('dist/webrtc.27c30b71.js'));   <-----------
  }
};

一定有更好的方法来做这件事。如何才能使我不必在每次重新构建客户端代码时都手动修改服务器代码?

EN

回答 1

Stack Overflow用户

发布于 2019-01-04 02:07:52

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

代码语言:javascript
代码运行次数: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匹配的任何请求,然后继续提供与所请求的路径匹配的文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54017201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档