Wie stelle ich ein benutzerdefiniertes Favicon in Express ein?

Lesezeit: 7 Minuten

Benutzer-Avatar
Ilja Karnaukhov

Ich habe vor kurzem angefangen, in Node.js zu arbeiten, und in der Datei app.js gibt es diese Zeile:

app.use(express.favicon());

Wie richte ich nun mein eigenes benutzerdefiniertes favicon.ico ein?

  • Stellen Sie sicher, dass Sie den Cache des Browsers ordnungsgemäß löschen, da Sie sonst möglicherweise keine Änderung sehen

    – vsync

    8. Mai 2013 um 8:42 Uhr

  • Verwenden app.use(express.favicon()) auf Express 4 gibt: Die meiste Middleware (wie Favicon) wird nicht mehr mit Express gebündelt und muss separat installiert werden. Siehe github.com/senchalabs/connect#middleware. Alternativ können Sie kein Favicon liefern mit: app.get('/favicon.ico', (req, res) => res.status(200)) Express js verhindert GET /favicon.ico

    – Benutzer

    18. April 2020 um 21:12 Uhr

  • Sie benötigen keine Middleware, nur eine Codezeile. Überprüfen Sie diese Antwort: Stack Overflow

    – 27px

    26. Dezember 2020 um 3:29 Uhr

Benutzer-Avatar
Benjamin Grünbaum

Im Express4

Installiere das Favicon-Middleware und dann mach:

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

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

Oder besser, mit der path Modul:

app.use(favicon(path.join(__dirname,'public','images','favicon.ico')));

(Beachten Sie, dass diese Lösung auch in Express 3-Apps funktioniert.)

Im Express3

Laut API, .favicon akzeptiert einen Standortparameter:

app.use(express.favicon("public/images/favicon.ico")); 

Meistens möchten Sie vielleicht Folgendes (wie von vsync vorgeschlagen):

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

Oder noch besser, verwenden Sie die path Modul (wie von Druska vorgeschlagen):

app.use(express.favicon(path.join(__dirname, 'public','images','favicon.ico'))); 

Warum Favicon ist besser als statisch

Laut dem Paketbeschreibung:

  1. Dieses Modul speichert das Symbol im Speicher, um die Leistung zu verbessern, indem der Festplattenzugriff übersprungen wird.
  2. Dieses Modul bietet eine ETag basierend auf dem Inhalt des Symbols und nicht auf Dateisystemeigenschaften.
  3. Dieses Modul wird mit den kompatibelsten dienen Content-Type.

  • Vielen Dank! Würden Sie bitte Eröffnung eines Problems damit ich dort nachsehen kann? Hoffentlich nur das Pfadzeug und zwar das path.join(__dirname, "public") führt dazu, dass die Zeichenfolgen ohne Trennzeichen verkettet werden? Je kleiner die Probe, desto schneller können wir das beheben (also bitte nur den Join-Teil).

    – Benjamin Grünbaum

    1. August 2016 um 12:56 Uhr

  • Welchen Vorteil hat die Verwendung einer weiteren Middleware (die von jemandem verwaltet wird, der sie in Zukunft möglicherweise nicht mehr verwaltet) anstelle der von Eduardo erklärten semplizistischeren Methode?

    – LucaM

    28. September 2018 um 11:04 Uhr


  • @LucaM erstmal – gute Frage! serve-favicon wird von uns (der Node.js-Stiftung) und Doug (der express pflegt) gepflegt – das heißt, es sind dieselben Leute, die express selbst schreiben und pflegen. Du kannst das … sehen Liesmich warum, aber im Grunde: Protokollierung, Caching, ETag-Handhabung und korrekt Content-Type. Sie können sehen, was es tut hier. Denken Sie, dass es sinnvoll ist, dies in die Antwort zu bearbeiten?

    – Benjamin Grünbaum

    28. September 2018 um 16:19 Uhr

  • Danke Benjamin für das Ausräumen der Features Favicon zur Verfügung stellen. Ich würde das in die akzeptierte Antwort schreiben, obwohl es nicht unbedingt erforderlich ist.

    – LucaM

    1. Oktober 2018 um 7:41 Uhr

Keine zusätzliche Middleware erforderlich. Benutz einfach:

app.use("https://stackoverflow.com/favicon.ico", express.static('images/favicon.ico'));

  • Ja, das sollte ausreichen und es ist die richtige Antwort, denn eine zusätzliche Middleware dafür fühlt sich wie ein Overkill an.

    – jlstr

    27. Januar 2019 um 2:08 Uhr

  • @jlstr es sind wie 20 Codezeilen, was für eine Overkill meinst du)) Und es ist eine Serverseite, also spielt die Anzahl der kleinen Abhängigkeiten keine Rolle. Und die erwähnte Middleware bietet: 1) Speichercaching 2) richtiges ETag setzen 3) richtiges setzen Content-Type

    – maxkorjukow

    29. August 2019 um 21:47 Uhr

  • ich habe schon app.use(express.static("dist")); die alle js-, img- und css-Dateien bedient, auf die wie verwiesen wird /img/some_image.png oder /js/my_file.js von dem dist Ordner und <link rel="shortcut icon" href="/img/favicon.ico"> in dem <head> aber immer noch 404-Fehler in einer Node/MongoDB-App auf Azure, die fehlgeschlagene Anforderung ist GET /favicon.ico. Ist das die Lösung: app.use(express.static("dist")); gefolgt von app.use('/favicon.ico', express.static('/img/favicon.ico'));? Bearbeiten: Ich habe dies in der lokalen Umgebung versucht, und http://localhost:3000/favicon.ico kehrt zurück Cannot GET /favicon.ico.

    – Benutzer1063287

    20. September 2020 um 3:23 Uhr


  • Antwort auf meine Kommentarfrage, das schien für mich zu funktionieren: app.use('/favicon.ico', express.static('dist/img/favicon.ico'));, Oben mein Bestehen app.use(express.static("dist"));.

    – Benutzer1063287

    20. September 2020 um 3:51 Uhr


  • Seien Sie vorsichtig, Sie sollten das Modul >require(‘serve-favicon’)< verwenden, da es einen Cache generiert und das Lesen der Datei aus dem Speicher verhindert

    – Daniel

    14. August um 5:30 Uhr

Keine benutzerdefinierte Middleware erforderlich?! Ausdrücklich:

 //you probably have something like this already    
app.use("/public", express.static('public')); 

Stellen Sie dann Ihr Favicon öffentlich und fügen Sie die folgende Zeile in den Kopf Ihres HTML-Codes ein:

<link rel="icon" href="https://stackoverflow.com/public/favicon.ico">

  • Das ist DaafVader. Das hat funktioniert. Meine Einstellung war: app.use(express.static(‘public’)). Ich habe mein Favicon im Ordner img gespeichert, der sich im öffentlichen Ordner befindet. In meiner HTML-Datei im Head-Bereich habe ich verwendet, wobei favicon.ico mein Dateiname meines Favicons war.

    – Nhon Ha

    26. November 2019 um 12:13 Uhr

  • Für mich musste ich verwenden ../public/favicon.ico da war ich in einem Verzeichnis einer Template-Engine.

    – Oliver Dixon

    28. Juli 2021 um 8:07 Uhr

Benutzer-Avatar
Schimon Doodkin

Smiley-Favicon, um Fehler zu vermeiden:

 //const fs = require('fs'); 
 //const favicon = fs.readFileSync(__dirname+"https://stackoverflow.com/public/favicon.ico"); // read file
 const favicon = new Buffer.from('AAABAAEAEBAQAAAAAAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAA/4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEREQAAAAAAEAAAEAAAAAEAAAABAAAAEAAAAAAQAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAP//AAD8HwAA++8AAPf3AADv+wAA7/sAAP//AAD//wAA+98AAP//AAD//wAA//8AAP//AAD//wAA', 'base64'); 
 app.get("https://stackoverflow.com/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);
 });

um das Symbol im obigen Code zu ändern

mache vielleicht hier ein Icon: http://www.favicon.cc/ oder hier :http://favicon-generator.org

konvertiere es vielleicht hier in base64: http://base64converter.com/

Ersetzen Sie dann den Basiswert des Symbols 64

allgemeine informationen zum erstellen eines personalisierten fav-icons

Symbole werden mit Photoshop oder Inkscape erstellt, vielleicht Inkscape, dann Photoshop für Lebendigkeit und Farbkorrektur (im Bild-> Anpassungsmenü).

für schnelles Symbol goto http://www.clker.com/ und wählen Sie einige Vektor-Cliparts aus und laden Sie sie als SVG herunter. Bringen Sie es dann zu Inkscape (https://inkscape.org/) und ändern Sie die Farben oder löschen Sie Teile, fügen Sie vielleicht etwas aus einem anderen Vektor-Clipart-Bild hinzu, wählen Sie dann zum Exportieren die zu exportierenden Teile aus und klicken Sie auf Datei> Exportieren, wählen Sie eine Größe wie 16×16 für Favicon oder 32×32. zur weiteren Bearbeitung 128×128 oder 256×256. Das ico-Paket kann mehrere Symbolgrößen enthalten. Es kann zusammen mit einem 16×16-Pixel-Favicon ein hochwertiges Symbol für den Link zur Website enthalten.

Dann vielleicht das Bild in Photoshop verbessern. wie Lebendigkeit, Abschrägungseffekt, runde Maske, irgendetwas.

Laden Sie dieses Bild dann auf eine der Websites hoch, die Favicons generieren. Es gibt auch Programme für Windows zum Bearbeiten von Symbolen wie z https://sourceforge.net/projects/variicons/ .

um das Favicon zur Website hinzuzufügen. Legen Sie einfach die favicon.ico als Datei in den Stammordner der Domain. zum Beispiel in node.js im öffentlichen Ordner, der die statischen Dateien enthält. Es muss nichts Besonderes sein, wie Code oben, nur eine einfache Datei.

Benutzer-Avatar
ThomasReggi

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

Ich hatte es lokal ohne das funktioniert __dirname + konnte es aber auf meinem bereitgestellten Server nicht zum Laufen bringen.

  • Versuchen app.use(express.favicon('./public/images/favicon.ico'));

    – Alexis Diel

    2. Januar 2018 um 16:48 Uhr


  • @AlexisDiel wie unten: warum?

    – Pierre Arlaud

    24. Mai um 8:39 Uhr

Wenn Sie Express > 4.0 verwenden, können Sie sich dafür entscheiden Serve-Favicon

  • Versuchen app.use(express.favicon('./public/images/favicon.ico'));

    – Alexis Diel

    2. Januar 2018 um 16:48 Uhr


  • @AlexisDiel wie unten: warum?

    – Pierre Arlaud

    24. Mai um 8:39 Uhr

Benutzer-Avatar
Mohsin Khan

Wenn Sie einen statischen Pfad festgelegt haben, verwenden Sie einfach die <link rel="icon" href="https://stackoverflow.com/images/favicon.ico" type="image/x-icon"> in Ihren Ansichten. Keine Notwendigkeit für etwas anderes. Bitte stellen Sie sicher, dass sich Ihr Bilderordner im öffentlichen Ordner befindet.

  • Stellen Sie einfach sicher, dass Sie verwenden 127.0.0.1 Anstatt von localhost in Google Chrome, während Sie entwickeln, aus irgendeinem Grund, der es für mich behoben hat.

    – cprcrack

    15. Juni 2018 um 9:45 Uhr

1275840cookie-checkWie stelle ich ein benutzerdefiniertes Favicon in Express ein?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy