8

.woff由于某些网络原因,我在中国从谷歌网络字体下载了文件。以前我@font-faceGithub Pages上尝试过,它可以工作。但这一次我花了一个小时才找到坏的地方。

我使用 Node 来提供静态文件mime,并且content-type看起来是application/x-font-woff,以及我在 CoffeeScript 中的代码:

exports.read = (url, res) ->
  filepath = path.join __dirname, '../', url
  if fs.existsSync filepath
    file_content = fs.readFileSync filepath, 'utf8'
    show (mime.lookup url)
    res.writeHead 200, 'content-type': (mime.lookup url)
    res.end file_content
  else
    res.writeHead 404
    res.end()

由于Github Pages 上的 是content-type,我只是在我的代码中删除了该行以使其相同..但它仍然失败:.woffapplication/octet-stream

exports.read = (url, res) ->
  filepath = path.join __dirname, '../', url
  if fs.existsSync filepath
    file_content = fs.readFileSync filepath, 'utf8'
    show (mime.lookup url)
    # res.writeHead 200, 'content-type': (mime.lookup url)
    res.end file_content
  else
    res.writeHead 404
    res.end()

最后,我切换到 Nginx 服务器来提供.woff文件。最后它开始工作了。

但是如何在 Node 上解决这个问题?

4

1 回答 1

3

在这一行中,fs.readFileSync(filepath, 'utf8')编码设置为'utf8'。它需要是'binary'

此外,该res.end(file_content)函数需要传递正确的编码。试试res.end(file_content, 'binary')

我有同样的问题,不得不自己解决,这个答案似乎在网上的任何地方都不存在。

于 2014-03-17T15:51:29.987 回答