Webpack 网页包:外部模块和ES模块互操作性
我在网上搜索了一个小时,希望我没有问一个重复的问题,但我没有找到任何关于我的问题的东西,但我觉得这应该发生在我以外的人身上 下面是设置:Webpack 网页包:外部模块和ES模块互操作性,webpack,react-redux,webpack-4,Webpack,React Redux,Webpack 4,我在网上搜索了一个小时,希望我没有问一个重复的问题,但我没有找到任何关于我的问题的东西,但我觉得这应该发生在我以外的人身上 下面是设置: 我们有一个带有3个脚本标记的html文件(React、ReactDOM和我们的应用程序包) React和ReactDOM作为UMD模块加载,类型为“var”,因此它们将出现在窗口上,如window.React和window.ReactDOM 我们的应用程序包与webpack捆绑在一起,具有React和ReactDOM的externals链接,并使用React
- 我们有一个带有3个脚本标记的html文件(React、ReactDOM和我们的应用程序包)
- React和ReactDOM作为UMD模块加载,类型为“var”,因此它们将出现在窗口上,如
和window.React
window.ReactDOM
- 我们的应用程序包与webpack捆绑在一起,具有React和ReactDOM的
链接,并使用externals
React-redux
react redux
捆绑到我们的捆绑包中(我从未要求它这么做),这意味着它将导入package.json
中“module”字段指向的文件,并使用es6类型默认导入react,在其一个文件中如下所示:
从“React”导入React代码>
由于webpack中的外部模块链接,这将实际上转化为:
React = webpack_require('react').default
// where webpack_require('react') will resolve to window.React
不幸的是,加载到窗口上的React-UMD模块预计不会像这样使用,它没有默认导出,因此React-redux
崩溃
问题
为了实现这一点,我有几个选择,但没有完全实现其中任何一个。我想这些都能让我到达终点线
我如何告诉webpack
将react redux
视为该死的CJS/UMD模块,而不是ES6模块。。。使用package.json中的“main”字段,而不是“module”
我如何告诉webpack
人为地将外部“React”包装成ES6模块的样子,如下所示:
React = webpack_require('react').default
// and webpack_require('react') should resolve to {default: React}
还有别的出路吗?那么,我是否应该将react redux
设置为外部?您解决过吗?Webpack和ES模块似乎在所有可能的方面都是敌人不,没有很好地解决它。出于某种原因,当捆绑包在AMD上下文中使用时,导入工作正常,但当作为“var”类型的模块使用时,它会崩溃。