我使用webpack 2.2.1编写了一个JavaScript ES6开发环境,我正在开发一个应用程序package-a
。
我也使用此环境来管理package-b
上使用npm link
定义的开发依赖项。
环境运作良好。
现在我需要填充包含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
也可以工作,但是当我在依赖项中使用fetch时,我得到了这个回溯:
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 目录的引用(其中whatwg-fetch
作为开发依赖项安装,因为我想保留"纯& #34;没有自动polifyll主机env)。
删除开发依赖项并将其从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的polyfill失败?有'一种解决方法吗?