David David - 4 months ago 118
Javascript Question

express.js favicons not showing up

I'm currently running a simple express.js example just trying to get favicons working. Everything works fine locally but when I upload it to my production server it just shows the default favicon. I've tried clearing the cache but the production server favicon seems to not want to show up. I'm running everything on iisnode on a windows 2008 aws server.

Anyone know what the problem might be?

var express = require('express');
var app = express();
var port = process.env.PORT || 3000;
var bodyParser = require('body-parser');

//for favicon
var favicon = require('serve-favicon');



app.configure(function() {
app.use(express.favicon(__dirname + '/views/icons/favicon.ico'));
app.use(express.static(__dirname, 'views'));
});


app.listen(port);
console.log("full path is: " + (__dirname + '/views/icons/favicon.ico'));
console.log('The magic happens on port ' + port);

Answer

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)

Removed in Express 4 : app.configure()

app.configure() is no longer available. Refer to this for more info.