反応コンポーネント内では、ブラウザ環境に依存するJSライブラリを使用しています。私はスクリプトタグでソースを指定することによってそれを使用しています。しかし、サーバーサイドのwebpackからパッケージングしているうちに、サーバーサイドから見つからないため、そのライブラリの参照を使用しているコンポーネントからエラーが発生します。サーバサイドパッケージからReactコンポーネントをスキップする方法は?
解決策は何ですか?
反応コンポーネント内では、ブラウザ環境に依存するJSライブラリを使用しています。私はスクリプトタグでソースを指定することによってそれを使用しています。しかし、サーバーサイドのwebpackからパッケージングしているうちに、サーバーサイドから見つからないため、そのライブラリの参照を使用しているコンポーネントからエラーが発生します。サーバサイドパッケージからReactコンポーネントをスキップする方法は?
解決策は何ですか?
通常、これを行うときに、webpackに環境変数を追加してから、その環境変数が存在するかどうかをチェックする機能をチェックします。そうでなければ、あなたはブラウザにいます。それはあなたがサーバー上にある場合。
window
が定義されているかどうかを確認するなどの作業を行うこともできます。基本的に何らかの方法であなたがどの環境にいるのかを確認し、条件を使ってコードを実行するかどうかを確認します。あなたはあなたのコードでこれを行うことができ
:
const Foo =() => <div>Hello</div>
const Bar =() => <div>World</div>
...
render() {
return (typeof document === 'undefined')
? <Foo />
: <Bar />
}
....
また、私は正しい方法でそれを使用していないなら、私に知らせてください。 – Roy
申し訳ありませんが十分に明確でない場合。問題はインポートにあり、NodeJSサーバーでは動作しないコードの部分ではありません。 importステートメントが "navigator"、 "window"のような参照を持つモジュールをロードさせているだけなので、webpack構築中に失敗します。そして、私はES6で条件付きインポートを行う良い方法がないと思います。 – Roy