2016-07-25 24 views
5

Sitemde statik içerik sunmak için express kullanıyorum ve FontAwesome (npm install font-awesome) ürününü dahil etmek istiyorum. Ancak, Font-Awesome'ın css'sinde font dosyalarının bağlantıları, cadı ekspresinin anlamadığı versiyon bilgisi içeren bir sorgu-string ile eklenir.Express: Statik içerik olarak font-awesome nasıl sunulur?

Bu sorunla karşılaştı ve bir düzeltme buldu mu? Statik içerik için q'ları görmezden gelmenin basit bir yolu var mı?

var express = require('express') 
var app = express() 

app.use('/static', express.static('./node_modules/font-awesome/css')) 
app.use('/static', express.static('./node_modules/font-awesome/fonts')) 

// response 200 | /static/font-awesome.min.css 
// error 404 | /static/fontawesome--webfont.woff?v=4.6.3 

Güncelleme olarak @Denys SEGURET ben tahmin ettiği gibi bizim bu qs değil işaret ediyor. Gerçek istek /fonts/fontawesome--webfont.woff?v=...

Çözüm

app.use('/fonts', express.static('./node_modules/font-awesome/fonts')) 

cevap

5

Tarayıcınız /static/fontawesome--webfont.woff?v=4.6.3 istekleri için, sunucu ?v=xxx bölümünü görmezden ücretsiz olması. Ve bu, express.static modülünde yapılan işlem. Bu bölümün amacı, tarayıcıların ve proxy'lerin dosyanın eski bir sürümünü kullanmasını engellemektir. Yani sorun, düşündüğünüz yerde değil. Sorun, statik route'u iki sunucuya eşlersiniz. URL'ler, harita değiştirme

app.use('/static', express.static('./node_modules/font-awesome')) 

ve değişim: Birincisi dosyası ve sorunları bir 404.

(Kirli) Çözüm 1 bulamazsa

/static/fonts/fontawesome--webfont.woff?v=4.6.3 

Kirli olduğunu söylüyorum çünkü bir düğüm modülünün denetlenmeyen içeriğini sunuyorsunuz (npm güncellemesi yaptığınızda güncellenir). Bunu asla yapmamalısın.

Çözüm 2:

statik bir dizin oluşturun (isim önemli değil) ve daha sonra sadece

app.use('/static', express.static('./static')); 
+0

Teşekkür kullanarak harita ./node_modules/font-awesome/css ve ./node_modules/font-awesome/fonts dizinlerin içerikleri içine koymak, ben görüyorum şimdi yazı tipini arıyor ''' /fonts/fontawesome-webfont.ttf?v = ... '' ' – MatUtter

+0

_" Bunu asla yapmamalısın. "_ Katılmıyorum. Bağımlılığın belirli bir semantine kilitlenirseniz, node_modules seçeneği işaretlenmemiş olsa bile, statik yol olarak kullanmayla ilgili bir sorun görmüyorum. –

+0

@PatrickRoberts Yarı saydam kilitleme nedeniyle "güvenli bir şekilde" yapabileceğinizi düşünürseniz, tam bir düğüm modülünün sunulmasında bir nokta yoktur. En azından söylenebilecek şey, aşırı derecede tembel ve kirli olmasıdır. –

İlgili konular