在节点中提供gzip文件会在浏览器中抛出net :: ERR_CONTENT_DECODING_FAILED

时间:2017-04-20 14:12:41

标签: node.js webpack gzip

我试图遵循这一点来提供一些静态压缩文件。 https://medium.com/@rajaraodv/two-quick-ways-to-reduce-react-apps-size-in-production-82226605771a

我使用webpack压缩插件生成gzip文件。

new CompressionPlugin({
    asset: '[path].gz[query]',
    algorithm: 'gzip',
    test: /\.(js|css)$/,
    deleteOriginalAssets: true
})

在我的服务器上,我有这个中间件。

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

当我运行应用时,在浏览器中即可获得 获取http://localhost:8080/app.js net :: ERR_CONTENT_DECODING_FAILED

可能,我仍然需要做更多的事情,但不知道到底是什么。

谢谢你,Ionut

1 个答案:

答案 0 :(得分:0)

您似乎错过了内容类型。在快速服务器中使用此代码:

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

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