Подтвердить что ты не робот

Невозможно изменить Favicon с помощью Express.js

Это действительно основной вопрос, но я пытаюсь изменить значок моего приложения node.js/Express с помощью

app.use(express.favicon(__dirname + '/public/images/favicon.ico'));

и я по-прежнему получаю значки по умолчанию. Это в моей функции app.configure, и да, я проверил, что там есть a favicon.ico в /public/images/favicon.ico. Здесь нет ничего о favicon.ico в консоли приводит меня к мысли, что эта строка кода игнорируется. Все остальное в функции (установочный порт, установка директорий представлений, установка механизма шаблонов и т.д.), Кажется, работает нормально, поэтому почему эта строка кода не будет выполняться?

Что я пробовал

  • Опорожнение кеша браузера
  • Перезапуск терминала и запуск node app.js снова
  • Добавление { maxAge: 2592000000 }, как описано здесь

Спасибо заранее.

Обновление: Я получил его для работы. См. Мой ответ ниже для получения дополнительной информации.

4b9b3361

Ответ 1

Я впервые посетил сайт в Safari (обычно я использую Chrome) и заметил, что он показывает правильный значок. Я попробовал очистить свой кеш в Chrome снова (дважды) безрезультатно, но после большего поиска я обнаружил, что явно favicons не хранятся в кеше. Я "обновил свой значок", используя метод, описанный здесь, и он сработает!

Здесь метод (измененный из приведенной выше ссылки), если ссылка не работает:

  • Откройте Chrome/проблемный браузер
  • Перейдите непосредственно к файлу favicon.ico, например. http://localhost:3000/favicon.ico
  • Обновите URL-адрес favicon.ico, нажав F5 или соответствующий браузер. Обновить (Обновить).
  • Закройте браузер и откройте свой веб-сайт - voila, ваш значок был обновлен!

Ответ 2

Что сработало для меня наконец:

Посмотрите, что

app.use(express.favicon(__dirname + '/public/images/favicon.ico')); 

находится в начале функции конфигурации приложения. Раньше у меня было это в конце. Как сказано в экспресс-документе: "Порядок, в котором" промежуточное ПО "определяется" с использованием app.use(), очень важен, они вызываются последовательно, поэтому это определяет приоритет промежуточного программного обеспечения ".

Мне не нужно было устанавливать maxAge.

Чтобы проверить это:

  • Перезапустите сервер с помощью node app.js
  • Очистить кеш браузера
  • Обновите Favicon с прямым доступом к нему, используя "localhost: 3000/your_path_to_the favicon/favicon.ico" и перезагрузив

Ответ 3

Вышеприведенный ответ больше не действителен.

Если вы используете

app.use(express.favicon(__dirname + '/public/images/favicon.ico'));

Вы получите эту ошибку:

Error: Most middleware (like favicon) is no longer bundled with Express and must be installed separately

Что вам нужно сделать, это получить serve-favicon.

бег

npm install serve-favicon --save

затем добавьте это в свое приложение

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

app.use(favicon(__dirname + '/public/images/favicon.ico'));

Ответ 4

смайлик favicon для предотвращения ошибки:

 var favicon = new Buffer('AAABAAEAEBAQAAAAAAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAA/4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEREQAAAAAAEAAAEAAAAAEAAAABAAAAEAAAAAAQAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAP//AAD8HwAA++8AAPf3AADv+wAA7/sAAP//AAD//wAA+98AAP//AAD//wAA//8AAP//AAD//wAA', 'base64'); 
 app.get("/favicon.ico", function(req, res) {
  res.statusCode = 200;
  res.setHeader('Content-Length', favicon.length);
  res.setHeader('Content-Type', 'image/x-icon');
  res.setHeader("Cache-Control", "public, max-age=2592000");                // expiers after a month
  res.setHeader("Expires", new Date(Date.now() + 2592000000).toUTCString());
  res.end(favicon);
 });

, чтобы изменить значок в коде выше

создайте значок, возможно, здесь: http://www.favicon.cc/ или здесь: http://favicon-generator.org

преобразуйте его в base64, возможно, здесь: http://base64converter.com/

затем замените значение значка 64

общая информация о том, как создать персонализированный значок fav

иконки создаются с использованием Photoshop или Inkscape, возможно, inkscape, а затем Photoshop для коррекции яркости и цветокоррекции (в меню настроек изображения → ).

для быстрого значка goto http://www.clker.com/ и выберите несколько векторных клипов и загрузите как svg. затем принесите его в inkscape и измените цвета или удалите части, возможно, добавьте что-то из другого изображения в векторном клипарта, затем для экспорта выберите части для экспорта и щелкните файл > экспорт, выберите размер, например 16x16 для favicon или 32x32, для дальнейшего редактирования 128x128 или 256x256, Пакет ico может иметь несколько размеров значков внутри. он может иметь значок 16x16 пикселей fav иконы высокого качества для ссылки на веб-сайт.

то возможно улучшить imaage в Photoshop. как вибрационная круглая круглая маска, что угодно.

затем загрузите это изображение на один из сайтов, которые генерируют значки. есть также программы для окон для редактирования значков (поиск, как "редактор значков окон", укажите, как создавать два изображения разного размера внутри одного значка).

чтобы добавить значок на веб-сайт. просто поместите файл favicon.ico в файл в папку корневых файлов домена. например, в nodejs в общей папке, которая связывает статические файлы. он не должен быть чем-то особенным, как код выше простого файла.

Ответ 5

Вы пытались очистить кеш браузера? Возможно, старый значок уже находится в кеше.

Ответ 6

Как это сделать без выражения:

if (req.method == "GET") {
     if (/favicon\.ico/.test(req.url)) {
        fs.readFile("home/usr/path/favicon.ico", function(err, data) {
            if (err) {
                console.log(err);
            } else {
                res.setHeader("Content-Type","image/x-icon");
                res.end(data);
            }
     });
}

Ответ 7

Что сработало для меня. Установите экспресс для обслуживания ваших статических ресурсов, как обычно, например

app.use(express.static('public'));

Поместите значок в свою общую папку; Затем добавьте строку запроса к URL-адресу значка, например

<link rel="icon" type="image/x-icon" href="favicon.ico?v="+ Math.trunc(Math.random()*999)>

В этом случае Chrome - это плохой браузер; IE. Fire Fox. Safari (все в Windows) работал нормально, БЕЗ вышеуказанного трюка.