これは本当に基本的な質問ですが、node.js/Expressアプリのファビコンを次のように変更しようとしています。
app.use(express.favicon(__dirname + '/public/images/favicon.ico'));
そして、私はまだデフォルトのファビコンを取得しています。これは私のapp.configure
関数にあり、はい、isfavicon.ico
に/public/images/favicon.ico
があることを確認しました。コンソールのfavicon.ico
にも何もありません。コードは無視されます。関数の他のすべて(ポートの設定、ビューディレクトリの設定、テンプレートエンジンの設定など)が正常に機能しているように見えるのに、なぜこのコード行が実行されないのでしょうか?
私が試したもの
node app.js
を再度実行します{ maxAge: 2592000000 }
を追加します here前もって感謝します。
更新:動作するようになりました。詳細については、以下の私の回答をご覧ください。
Safariのサイトに初めてアクセスしてみました(通常はChromeを使用しています)が、正しいファビコンが表示されていることに気付きました。 Chromeでもう一度(2回)キャッシュをクリアしませんでしたが、さらに検索した結果、 明らかにファビコンはキャッシュに保存されていません です。 here で説明されている方法を使用して「faviconを更新しました」
リンクが機能しなくなった場合の方法は、上記のリンクから変更されたメソッドです。
最終的に私のために働いたもの:
それを見て
_app.use(express.favicon(__dirname + '/public/images/favicon.ico'));
_
アプリ構成機能の先頭にあります。私は最後にそれを持っていました。 Expressのドキュメントでは、「app.use()
を使用してミドルウェアを「定義」する順序は非常に重要であり、順番に呼び出されるため、ミドルウェアの優先順位が定義されます。」
MaxAgeを設定する必要はありませんでした。
テストするには:
node app.js
_を使用してサーバーを再起動します上記の答えはもはや有効ではありません。
使用する場合
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
あなたがする必要があるのはget 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'));
私のために働いたものは次のとおりです。エクスプレスを設定して、通常どおり静的リソースを提供します。たとえば、
app.use(express.static('public'));
ファビコンをパブリックフォルダーに入れます。次に、アイコンのURLにクエリ文字列を追加します。たとえば、
<link rel="icon" type="image/x-icon" href="favicon.ico?v="+ Math.trunc(Math.random()*999)>
この場合、Chromeは動作不良のブラウザです。IE、Firefox、Safari(すべてWindows))は、上記のトリックなしで正常に機能しました。
私が思いつく最も簡単な方法は(もちろんローカル開発者にのみ有効)、別のポートでサーバーをホストすることでした
PORT=3001 npm run start
エラーを防ぐためのスマイリーファビコン:
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に持っていき、色を変更するか、パーツを削除し、別のベクタークリップアート画像から何かを追加し、エクスポートするパーツを選択してエクスポートし、ファイル>エクスポートをクリックします。 icoパッケージは、内部にいくつかのアイコンサイズを持つことができます。 16x16ピクセルのfavアイコンとともに、Webサイトへのリンク用の高品質アイコンを含めることができます。
それから多分Photoshopで画像を強化します。 Vibrance bivel round maskなど何でも。
次に、この画像をファビコンを生成するWebサイトの1つにアップロードします。アイコンを編集するためのウィンドウ用のプログラムもあります(「windows icon editor opensource」のような検索、単一のアイコン内に異なるサイズの2つのイメージを作成する方法を考えてください)。
ファビコンをウェブサイトに追加します。 favicon.icoをルートドメインファイルフォルダーにファイルとして配置するだけです。たとえば、静的ファイルを含むパブリックフォルダーのnodejs。単純なファイルの上のコードのような特別なものである必要はありません。
ブラウザのキャッシュをクリアしようとしましたか?古いファビコンがまだキャッシュに残っている可能性があります。
明示せずにこれを行う方法:
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);
}
});
}