問題タブ [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.

0 投票する
1 に答える
537 参照

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 構成部分です。

0 投票する
1 に答える
456 参照

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、プラグイン構成を追加し、リンクにロケールのプレフィックスを付けると、サイトは私をホーム コンポーネントにリダイレクトします。