Express.js和拦截.js请求和服务.gz而不是

时间:2017-03-14 00:16:01

标签: express gzip

所以,我正在使用webpack压缩/ gzip我的js文件。然后我想使用我的Express服务器在.js请求进入时为这些服务器提供服务。我有一段时间让它在生产中工作。我能够在开发中。我觉得这与我如何设置静态文件有关。 Assitance?

app.use(express.static(path.join(__dirname, 'build')));
app.get('*', (req, res) => {
    res.sendFile(path.join(__dirname, 'build', 'index.html'));
});

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

我尝试了上面代码的上面,中间等。不工作。我知道我的webpack正在构建它,因为我看到了build文件夹中的输出。我似乎无法让我的快速服务器提供.gz版本。

1 个答案:

答案 0 :(得分:1)

我的猜测是,在生产中,您运行的是2.x版,而在开发环境中,您使用的是3.x. 根据{{​​3}},您可以看到......

对于2.x

// basic URL rewrite to serve gzipped versions of *.min.js files
app.get('*', function (req, res, next) {
  req.url = req.url + '.gz';
  res.header('Content-Encoding', 'gzip');
  next();
});

和3.x:

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

注意:我没有试过这个,只是预感。