2

アプリケーションを開発している webpack 2.2.1 を使用した JavaScript ES6 開発環境がありますpackage-a

package-bを使用して定義されている開発依存関係を管理するためにも、この環境を使用していnpm linkます。

環境はうまく機能します。

次に、 package-b で使用されるfetchAPIをポリフィルする必要があります。

だからwhatwg-fetch、ベンがインストールされています。

私が使用しているポリフィルの方法は、このディスカッションで提案されているものです: https://gist.github.com/Couto/b29676dd1ab8714a818f#gistcomment-1584602

したがって、私は自分のコードを呼び出していませんimport 'whatwg-fetch'が、webpack 構成にこれがあります。

  plugins: [
    new webpack.ProvidePlugin({
      'Promise': 'es6-promise',
      'fetch': 'imports-loader?this=>global!exports-loader?global.fetch!whatwg-fetch',
      'Headers': 'imports-loader?this=>global!exports-loader?global.Headers!whatwg-fetch'
    }),
    ...

これは私にとっては常にうまく機能fetchし、メインの ( package-a) モジュールから使用しても機能しますが、依存関係でフェッチを使用すると、次のトレースバックが得られます。

ERROR in ../package-b/~/imports-loader?this=>global!../package-b/~/exports-loader?global.fetch!../ecmwf-prwa-editor/~/whatwg-fetch/fetch.js
Module build failed: Error: "...package-b/node_modules/whatwg-fetch/fetch.js" is not in the SourceMap.

package-b トレースバックには、 node_modulesディレクトリへの ref が含まれていることに注意してください(ここでwhatwg-fetchは、「純粋な」状態を維持し、自動的にホスト環境を polifyll せずに、開発の依存関係としてのみインストールされます)。

開発依存関係を削除し、それを削除しnode_modulesてトレースバックを変更します。

ERROR in ../package-b/src/something/something.js
Module not found: Error: Can't resolve 'whatwg-fetch' in '/Users/keul/.../package-b/src/something'
...

このポリフィルの方法をやめて、import 'whatwg-fetch'すべてpackage-aの作業を正常に行うだけです。

質問: ここで何が起こっているのですか? 依存関係が存在するパッケージを開発していますが、この場合、webpack によるポリフィルが失敗するのはなぜですか? それを修正する方法はありますか?

4

0 に答える 0