无法分配给只读属性'__esModule'

Mat*_*ick 13 ecmascript-6 reactjs webpack babeljs redux

使用Webpack和Babel编译React和Redux应用程序时,我得到:

Uncaught TypeError: Cannot assign to read only property '__esModule' of #<Object>

在某些旧版浏览器中(<= Chrome 1,Android 4,Safari 5).

这个问题似乎源于reduxreact-reduxexports.__esModule = true;lib构建中输出行但我的应用程序使用了Object.defineProperty(因为它们松散地构建而我没有).

两种解决方案是:

  1. loose模式下构建我的应用程序.

  2. 使用与应用程序相同的.babelrc 导入react-redux/srcredux/src构建它(一切都不松散).

只要它们是一致的并且两者都是:

Object.defineProperty(exports, "__esModule", {
  value: true
});
Run Code Online (Sandbox Code Playgroud)

并且exports.__esModule = true;不共存于我输出,一切正常.

我的问题是,什么是正确的解决方案?为什么这只影响旧浏览器?为什么他们会发生冲突?

这是一个类似的问题.

lan*_*aso 5

Object.defineProperty 在一些Android 4股票浏览器版本以及可能在Webkit中使用错误实现的其他浏览器中被破坏了.

检查此错误报告 ,并将此另一个报告给chrome项目.

好消息是您可以应用此polyfill来解决问题.

为了简化操作,您只需<script>在包之前将该polyfill复制并粘贴到标签上即可.

这将解决您的问题.


kud*_*ajz 3

我的猜测是,您需要安装babel-plugin-add-module-exports并在.babelrc注册中安装此插件:

"plugins": [
    "babel-plugin-add-module-exports"
]
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息,请访问该网站