Nodejs サーバー側レンダリング フォントをダウンロードできない
May 23, 2023 pm 06:18 PMインターネットの継続的な発展に伴い、フロントエンド開発の重要性がますます高まっています。従来の静的ページ レンダリングでは最新の Web サイトのニーズを満たすことができなくなり、サーバー サイド レンダリング (SSR) が一般的なソリューションになりました。 Node.js は非常に人気のあるサーバーサイド Javascript 実行環境であり、サーバーサイド レンダリングの実装に使用できます。ただし、場合によっては、nodejs サーバー側レンダリング フォントをダウンロードできないという問題が発生することがあります。
なぜこの問題が発生するのでしょうか?サーバー側のレンダリング プロセス中に、対応するフォント参照アドレスが含まれる HTML 文字列が生成されてクライアントに返されます。クライアントがこれらのフォントのリソースを要求すると、サーバーは正しく応答してファイルを返すことができる必要があります。ただし、場合によっては、これが起こらないこともあります。この記事では、この問題の考えられる原因を調査し、いくつかの解決策を提供します。
- クロスドメイン リクエストの問題
サーバー側レンダリングを使用する場合、クロスドメイン リクエストの問題が発生する可能性があります。フォント リソース ファイルと HTML ファイルが異なるドメイン名とポートを持つサーバー上にある場合、クライアントはクロスドメイン リクエストを送信します。現時点では、サーバーが応答ヘッダーを正しく設定していない可能性があり、ブラウザーがフォント ファイルのダウンロードを拒否することがあります。 Node.js では、cors
ミドルウェア ライブラリを使用して、この問題を解決できます。 cors
ライブラリを使用した後は、次の例に示すように、サーバー側でフォント ファイルの応答ヘッダーを設定してクロスドメイン リクエストを許可するだけです。 ##フォントファイルのパス問題
- サーバーサイドでレンダリングする際に、フォントファイルのパス問題がよく発生します。開発では、絶対ファイル パスまたは相対ファイル パスのいずれかを使用できます。ただし、これらのパスは実稼働環境にデプロイするときに変更される可能性があります。この場合、フォント ファイルへのパスが常に正確になるように、Web サイトのルートへの相対パスを使用することをお勧めします。
フォント ファイルが存在しません
- フォント ファイルが存在しない場合、サーバーは 404 エラーを返します。現時点では、クライアントはフォントをダウンロードできません。この場合、クライアントに応答を送信する前に、フォント ファイルが存在するかどうかを確認し、エラー処理を行う必要があります。
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 タイプの欠落
- サーバー側レンダリングでは、MIME タイプの欠落の問題も発生する可能性があります。 MIME (MultiPurpose Internet Mail Extensions) タイプは、ファイルのタイプとファイルの処理方法を示します。正しい MIME タイプが欠落している場合、ブラウザはファイルのタイプを正しく認識できない可能性があり、フォントをダウンロードできません。この場合、MIME ライブラリを使用して、正しい 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 サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











UseEffectとは何ですか?副作用を実行するためにどのように使用しますか?

JavaScriptの高次関数とは何ですか?また、より簡潔で再利用可能なコードを書くためにどのように使用できますか?

制御されたコンポーネントと制御されていないコンポーネントの利点と短所は何ですか?

usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか?
