2017-03-14 2 views
1

Also verwende ich Webpack, um meine js-Dateien zu komprimieren/gzip. Dann möchte ich meinen Express-Server nutzen, um diese zu bedienen, wenn eine .js-Anfrage eingeht. Ich habe es verdammt schwer, dies in der Produktion zu erledigen. Ich bin in der Lage, in dev. Ich denke, es hängt damit zusammen, wie ich meine statischen Dateien einstelle. Unterstützung?Express.js und abfangen von .js Anfragen und Serving .gz statt

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

Ich versuchte Positionierung oben, Mitte usw. des obigen Codes. Funktioniert nicht. Ich weiß, dass mein Webpack es erstellt, wie ich die Ausgabe im Build-Ordner sehe. Ich kann einfach nicht meinen Express-Server bekommen, der die .gz-Version anbietet.

Antwort

1

Meine Vermutung ist, dass Sie in der Produktion Version 2.x und in Dev verwenden Sie 3.x. Per http://51elliot.blogspot.com/2012/08/serve-gzipped-files-with-expressjs.html können Sie sehen, dass ...

Für 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(); 
}); 

und für 3.x:

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

HINWEIS: Ich kann das nicht versucht haben, nur eine Ahnung .

+0

Romain - danke. Gibt es irgendetwas, was du merkst - falsch mit meiner Bestellung? Selbst wenn ich versuche, für die Anfrage zu trösten, kommt nichts durch die "* .js"/Route. –

+0

@jamesemanon - Welche Version verwenden Sie? Beachten Sie, dass der eine Satz und der andere Kopf der Antwort verwendet wird. –

+0

Könnte auch ein Firewall-Problem sein. –

Verwandte Themen