快递:如何提供静态内容的字体真棒?
我使用快递在我的网站上提供静态内容,我想要合并FontAwesome( npm install font-awesome
)。 但是,在Font-Awesome的css中,字体文件的链接附加了一个查询string,该查询string包含表示不明白的版本信息。
有没有人遇到过这个,find了解决办法? 有没有简单的方法来表示忽略静态内容的QS?
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
更新由于@DenysSéguret指出,这不是我所想的那样。 实际请求是/fonts/fontawesome--webfont.woff?v=...
解
app.use('/fonts', express.static('./node_modules/font-awesome/fonts'))
当您的浏览器请求/static/fontawesome--webfont.woff?v=4.6.3
,服务器可以自由地忽略?v=xxx
部分。 这就是express.static
模块所做的。 这一部分的重点是防止浏览器和代理使用旧版本的文件。
所以问题不在于你认为的地方。 问题是你将静态route
映射到两台服务器。 第一个没有find该文件,并发出404。
(脏)解决scheme1:
改变你的映射
app.use('/static', express.static('./node_modules/font-awesome'))
并更改url:
/static/fonts/fontawesome--webfont.woff?v=4.6.3
我说这是脏的,因为你正在提供一个节点模块的未经检查的内容(当你做一个npm更新的时候会更新)。 你永远不应该这样做。
解决scheme2:
创build一个静态目录(名称无关紧要),放在./node_modules/font-awesome/css
和./node_modules/font-awesome/fonts
目录的内容中,然后使用
app.use('/static', express.static('./static'));