我使用express来在我的网站上提供静态内容,我想要合并FontAwesome(npm install font-awesome
)。但是在Font-Awesome的css中,字体文件的链接附有一个查询字符串,其中包含表达不明白的版本信息。
有没有人遇到这个并找到了解决办法?是否有一种简单的方法可以使表达式忽略静态内容的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所指出的那样,我认为不是qs。实际请求是/fonts/fontawesome--webfont.woff?v=...
解决方案
app.use('/fonts', express.static('./node_modules/font-awesome/fonts'))
答案 0 :(得分:6)
当您的浏览器请求/static/fontawesome--webfont.woff?v=4.6.3
时,服务器可以忽略?v=xxx
部分。这就是express.static
模块所做的事情。该部分的目的是防止浏览器和代理使用旧版本的文件。
所以问题不在你想象的地方。问题是您将静态route
映射到两个服务器。第一个找不到该文件并发出404。
更改地图
app.use('/static', express.static('./node_modules/font-awesome'))
并更改网址:
/static/fonts/fontawesome--webfont.woff?v=4.6.3
我说它很脏,因为你正在提供节点模块的未经检查的内容(当你进行npm更新时会更新)。你永远不应该这样做。
创建一个静态目录(名称无关紧要)并放入./node_modules/font-awesome/css
和./node_modules/font-awesome/fonts
目录的内容,然后使用
app.use('/static', express.static('./static'));