アプリケーションを開発している webpack 2.2.1 を使用した JavaScript ES6 開発環境がありますpackage-a
。
package-b
を使用して定義されている開発依存関係を管理するためにも、この環境を使用していnpm link
ます。
環境はうまく機能します。
次に、 package-b で使用されるfetch
APIをポリフィルする必要があります。
だから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 によるポリフィルが失敗するのはなぜですか? それを修正する方法はありますか?