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?
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?
Benjamin Grünbaum
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.)
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')));
Laut dem Paketbeschreibung:
ETag
basierend auf dem Inhalt des Symbols und nicht auf Dateisystemeigenschaften.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
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.
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
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
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