問題タブ [gatsby-plugin-intl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gatsby - gatsby-plugin-layout を追加した後に injectIntl でエラーが発生する
サイトを翻訳するためにintl
、layout.js ファイルに次のように挿入しています。
しかし、プロジェクトに追加した後(この例gatsby-plugin-layout
に基づいて)、次のエラーが発生します。
Error: [React Intl] Could not find required `intl` object. <IntlProvider> needs to exist in the component ancestry.
翻訳を保持しながら、このエラーを取り除くにはどうすればよいですか?
これは、関連する gatsby 構成部分です。
reactjs - 単一ページのサイトに gatsby-plugin-intl を使用できません
私が使用Gatsby
していて、単一ページのサイトを構築したいので、ページを作成せずに。gatsby-node.js
これを達成するために、次のコードで編集しました。
index.js
その場合、各リクエストは、唯一のページに再ルーティングされます。次に、index.js
私が持っているページで:
ご覧のとおり、URL に基づいて特定のコンポーネントをロードするさまざまなルーターがあります。path
正しいパスに一致するように、それぞれに現在のロケールをプレフィックスとして付けました。このメカニズムは、ホームページのみで正常に機能していますが、他のリンクでは機能していません。実際、次のような場所にアクセスした場合:
コンポーネントをロードする必要があるためCollection
、サイトは単純に次の場所にリダイレクトします。
Home
コンポーネントを再度表示します。
私は何を間違えましたか?
アップデート
ページ構造:
ご覧のとおり、index.js
で構成したように、すべてのリクエストを処理する がありますgatby-node.js
。少なくともこの構成を使用して、ローカリゼーション プラグインを削除すると:
URLの前に を付けませんintl.locale
。すべて正常に動作しています。しかしredirect: true
、プラグイン構成を追加し、リンクにロケールのプレフィックスを付けると、サイトは私をホーム コンポーネントにリダイレクトします。