How to set custom favicon in Express?
I recently started working in Node.js and in the app.js file there is this line:
app.use(express.favicon());
Now, how do I set up my own custom favicon.ico?
In Express 4
Install the favicon middleware and then do:
var favicon = require('serve-favicon');
app.use(favicon(__dirname + '/public/images/favicon.ico'));
Or better, using the path
module:
app.use(favicon(path.join(__dirname,'public','images','favicon.ico')));
(note that this solution will work in express 3 apps as well)
In Express 3
According to the API, .favicon
accepts a location parameter:
app.use(express.favicon("public/images/favicon.ico"));
Most of the time, you might want this (as vsync suggested):
app.use(express.favicon(__dirname + '/public/images/favicon.ico'));
Or better yet, use the path
module (as Druska suggested):
app.use(express.favicon(path.join(__dirname, 'public','images','favicon.ico')));
Why favicon is better than static
According to the package description:
- This module caches the icon in memory to improve performance by skipping disk access.
- This module provides an
ETag
based on the contents of the icon, rather than file system properties. - This module will serve with the most compatible
Content-Type
.
No extra middlewares required. Just use:
app.use('/favicon.ico', express.static('images/favicon.ico'));