2017-03-14 57 views
1

所以,我使用webpack來壓縮/ gzip我的js文件。然後我想用我的Express服務器在.js請求進來時爲它們提供服務。我有時間讓這個工作在生產環境中。我能夠在開發中。我覺得它與我如何設置我的靜態文件有關。 Assitance?Express.js和攔截.js請求和服務.gz而不是

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正在構建它,因爲我在構建文件夾中看到輸出。我似乎無法讓我的快遞服務器提供.gz版本。

回答

1

我的猜測是,在生產中,您運行的是版本2.x,而在開發中您使用的是3.x. 按http://51elliot.blogspot.com/2012/08/serve-gzipped-files-with-expressjs.html你可以看到...

對於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(); 
}); 

注:我沒有嘗試這樣做,只是一種預感。

+0

羅曼 - 謝謝。有什麼,你注意到 - 我的訂單有問題嗎?即使當我嘗試爲請求進行控制時,通過「* .js」/ get路由也不會發生任何事情。 –

+0

@jamesemanon - 你正在使用哪個版本。注意在響應中有一組和另一個標題。 –

+0

也可能是防火牆問題。 –