【问题标题】:Can't serve gzipped files properly using Express无法使用 Express 正确提供 gzip 文件
【发布时间】:2018-04-19 00:53:53
【问题描述】:

我已经压缩了 webpack 包,当我尝试提供它时,我在客户端收到 ERR_CONTENT_DECODING_FAILED 错误。 这是我的中间件:

`app.get('*.js', function (req, res, next) {
  req.url = req.url + '.gz';
  res.set('Content-Encoding', 'gzip');
  res.set('Content-Type', 'text/javascript');
  next();
});`

有人知道发生了什么吗?我尝试使用.header().setHeader() 方法,但也没有得到任何想要的结果。 提前致谢。

这是压缩插件:

new CompressionPlugin({
      asset: "[path].gz[query]",
      algorithm: "gzip",
      test: /\.js$/,
      threshold: 10240,
      minRatio: 0.8
    })

【问题讨论】:

  • 而且,数据实际上是按预期发送的吗?而且,它实际上是 gzip?
  • 是的,我已经 gzip 包(由 webpack 压缩,检查我的 webpack 配置),这个包无法正常提供。我可以从这个文件夹中提供纯 js,但是使用 .gz 我遇到了这个问题。
  • 您的 webpack 配置不相关......通过网络发送了什么?是你所期望的吗?使用 Wireshark 之类的工具或 Fiddler 之类的工具来帮助验证这一点。

标签: javascript node.js express gzip middleware


【解决方案1】:

我只是通过放置这个中间件声明解决了这个问题:

app.get('*.js', function (req, res, next) {
  req.url = req.url + '.gz';
  res.set('Content-Encoding', 'gzip');
  res.set('Content-Type', 'text/javascript');
  console.log('sent')
  next();
});

app.use('/static', Express.static('dist')); 之前。 (以前是相反的)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 2013-03-19
    相关资源
    最近更新 更多