インターネットの継続的な発展に伴い、フロントエンド開発の重要性がますます高まっています。従来の静的ページ レンダリングでは最新の Web サイトのニーズを満たすことができなくなり、サーバー サイド レンダリング (SSR) が一般的なソリューションになりました。 Node.js は非常に人気のあるサーバーサイド Javascript 実行環境であり、サーバーサイド レンダリングの実装に使用できます。ただし、場合によっては、nodejs サーバー側レンダリング フォントをダウンロードできないという問題が発生することがあります。
なぜこの問題が発生するのでしょうか?サーバー側のレンダリング プロセス中に、対応するフォント参照アドレスが含まれる HTML 文字列が生成されてクライアントに返されます。クライアントがこれらのフォントのリソースを要求すると、サーバーは正しく応答してファイルを返すことができる必要があります。ただし、場合によっては、これが起こらないこともあります。この記事では、この問題の考えられる原因を調査し、いくつかの解決策を提供します。
サーバー側レンダリングを使用する場合、クロスドメイン リクエストの問題が発生する可能性があります。フォント リソース ファイルと HTML ファイルが異なるドメイン名とポートを持つサーバー上にある場合、クライアントはクロスドメイン リクエストを送信します。現時点では、サーバーが応答ヘッダーを正しく設定していない可能性があり、ブラウザーがフォント ファイルのダウンロードを拒否することがあります。 Node.js では、cors
ミドルウェア ライブラリを使用して、この問題を解決できます。 cors
ライブラリを使用した後は、次の例に示すように、サーバー側でフォント ファイルの応答ヘッダーを設定してクロスドメイン リクエストを許可するだけです。 ##フォントファイルのパス問題
フォント ファイルが存在しません
const express = require('express'); const cors = require('cors'); const app = express(); app.use(cors()); app.get('/fonts/:fontName', (req, res) => { const fontName = req.params.fontName; // 发送字体文件 res.sendFile(fontName, { root: 'fonts/' }); }); app.listen(8080, () => { console.log('Server started on http://localhost:8080'); });
MIME タイプの欠落
const fontPath = path.join(__dirname, 'fonts/Roboto-Regular.ttf'); fs.access(fontPath, fs.constants.F_OK, (err) => { if (err) { console.error(`Error: Could not access file ${fontPath}`); res.sendStatus(404); } else { // 发送字体文件 res.sendFile('Roboto-Regular.ttf', { root: 'fonts/' }); } });
以上がNodejs サーバー側レンダリング フォントをダウンロードできないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。