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
现在的问题是: webpack将符合es6模块的文件从
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”类型的模块使用时,它会崩溃。