无法使用Express.js更改Favicon

gtm*_*mtg 52 favicon node.js express

这是一个非常基本的问题,但我正在尝试更改node.js/Express应用程序的favicon

app.use(express.favicon(__dirname + '/public/images/favicon.ico'));
Run Code Online (Sandbox Code Playgroud)

我仍然得到默认的图标.这是在我的app.configure功能,是的,我已经验证,有 一个favicon.ico/public/images/favicon.ico.还有的约没有favicon.ico在控制台中,或者说,这使我相信,这行代码被忽略.函数中的其他所有内容(设置端口,设置视图目录,设置模板引擎等)似乎工作正常,那么为什么这行代码不会执行?

我尝试了什么

  • 清空浏览器缓存
  • 重新启动终端并node app.js再次运行
  • 添加{ maxAge: 2592000000 },如所描述这里

提前致谢.

更新:我得到了它的工作.有关详细信息,请参阅下面的答案.

gtm*_*mtg 74

我尝试第一次访问Safari中的网站(我通常使用Chrome)并注意到它显示的是正确的图标.我尝试在Chrome中再次清除缓存(两次)无济于事,但经过更多搜索后,我发现显然还没有将缓存存储在缓存中.我使用这里描述的方法"刷新了我的图标" 并且它有效!

这是方法(从上面的链接修改),以防链接失效:

  1. 打开Chrome /有问题的浏览器
  2. 直接导航到favicon.ico文件,例如http:// localhost:3000/favicon.ico
  3. 按F5或相应的浏览器刷新(重新加载)按钮刷新favicon.ico URL
  4. 关闭浏览器并打开您的网站 - 瞧,您的favicon已更新!

  • 我无法相信这不在模块serve-favicon的文档中.看起来非常重要,特别是考虑到这个答案有41个赞成票.感谢您链接到这些资源! (6认同)

use*_*647 35

最终对我有用的是:

看那个

app.use(express.favicon(__dirname + '/public/images/favicon.ico')); 
Run Code Online (Sandbox Code Playgroud)

是应用程序配置功能的开头.我在最后之前得到了它.正如Express文档所说的那样:"使用"定义"中间件的顺序app.use()非常重要,它们是按顺序调用的,因此定义了中间件优先级.

我不需要设置任何maxAge.

测试它:

  • 用的重启服务器 node app.js
  • 清除浏览器缓存
  • 通过使用"localhost:3000/your_path_to_the favicon/favicon.ico"直接访问它来刷新Favicon并重新加载

  • 使用这个全新的应用程序,无需任何修改:app.use(express.favicon('public/images/favicon.ico')); (3认同)

cap*_*ght 15

以上答案不再有效.

如果你使用

app.use(express.favicon(__dirname + '/public/images/favicon.ico'));
Run Code Online (Sandbox Code Playgroud)

你会收到这个错误:

Error: Most middleware (like favicon) is no longer bundled with Express and must be installed separately
Run Code Online (Sandbox Code Playgroud)

你需要做的是获得服务 - favicon.

npm install serve-favicon --save
Run Code Online (Sandbox Code Playgroud)

然后将其添加到您的应用程序

var express = require('express');
var favicon = require('serve-favicon');
var app = express();

app.use(favicon(__dirname + '/public/images/favicon.ico'));
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案!“--save”表示包含依赖项,请参见此处:http://stackoverflow.com/questions/19578796/what-is-the-save-option-for-npm-install (2认同)