私はJSをバンドルするためにwebpackを使用しているので、サーバーとクライアントで使用できます。私が難しいと思っていることの1つは、両方の場所でフェッチオブジェクトを使用することです。サーバー側では、ノード再利用ES6フェッチオブジェクト
import fetch from 'node-fetch';
を取得し、クライアント側で、私は何もしてwindow.fetch
オブジェクトを使用する必要がありますインポートする必要はありませんがあります。
フェッチオブジェクトを条件付きでインポートする方法はありますか。サーバー側にはnode-fetch
、クライアント側にはwindow.fetch
が使用されていますか?
私はこれ試してみた:ウィンドウが存在している場合、私はまた、フェッチオブジェクトを変異しようとした
if(window == null) {
import fetch from 'node-fetch';
}
をしかし、輸入は 'トップレベル' である必要があります:
import fetch from 'node-fetch';
if(window) fetch = window.fetch;
が、フェッチは読み取り専用になります。
回避策はありますか?現在、私は2つのファイルをインポートと1つ(それぞれのサーバー/クライアント用)持っているが、私は重複したコードを避けたい。これは動作するはず
をクライアントJS LIBSので、クライアントに表示されます。 – lonelyloner
あなたは 'var fetch = window.fetch'のようなもので[束縛しているときに' import'文を置き換えて](https://www.npmjs.com/package/webpack-replace)することができます。 –