W przypadku, gdy nasza aplikacja w Node.js nie posiada ikonki „favicon.ico”, a nie chcemy mieć niezbyt eleganckiego błędu nieznalezienia pliku konieczne jest zastosowanie obsługi ikony.
Możemy zrobić to na wiele sposobów i wszystko zależy od tego jak napisana jest nasza aplikacja jednak w najprostszym przypadku mamy serwer http, który serwuje np. html-a. W takim przypadku wystarczy obsłużyć request-a, który przyszedł z zapytaniem o ikonę np. w poniższy sposób:
if (req.url === '/favicon.ico') { res.writeHead(200, {'Content-Type': 'image/x-icon'} ); res.end(); console.log('favicon requested'); return; }
Dla prostego przypadku wyglądało by to następująco:
var http = require('http'); http.createServer(function (req, res) { if (req.url === '/favicon.ico') { res.writeHead(200, {'Content-Type': 'image/x-icon'} ); res.end(); return; } res.writeHead(200, {'Content-Type': 'text/plain'} ); res.write('Hello, world!'); res.end(); }).listen(8000);
W przypadku gdy mamy aplikację napisaną z wykorzystaniem frameworka Expressjs może wyglądać to następująco:
... var app = express(); ... app.use(function(req, res, next) { if (req.url === '/favicon.ico') { res.sendStatus(200); res.send(); return; } next(); });
Przydało by się hajlajtowanie składni 😉
Dzięki za wpis!
W wolnej chwili sprawdzę czy moduł którego używam ma taką funkcjonalność i dodam do wpisu 🙂
Dzięki za komentarz.