Reactjs 无法分配给只读属性'__esModule';
使用Webpack和Babel编译React和Redux应用程序时,我得到:Reactjs 无法分配给只读属性'__esModule';,reactjs,ecmascript-6,webpack,babeljs,redux,Reactjs,Ecmascript 6,Webpack,Babeljs,Redux,使用Webpack和Babel编译React和Redux应用程序时,我得到: 未捕获类型错误:无法分配给的只读属性“\uu esModule” 在一些较旧的浏览器中(我猜,您需要安装babel插件添加模块导出,并在中注册此插件: "plugins": [ "babel-plugin-add-module-exports" ] 有关更多信息,请访问。对象。某些Android 4股票浏览器版本和可能使用Webkit中错误实现的其他浏览器上的defineProperty已损坏 检查 并向铬项
未捕获类型错误:无法分配给的只读属性“\uu esModule”
在一些较旧的浏览器中(我猜,您需要安装
babel插件添加模块导出
,并在中注册此插件:
"plugins": [
"babel-plugin-add-module-exports"
]
有关更多信息,请访问。对象。某些Android 4股票浏览器版本和可能使用Webkit中错误实现的其他浏览器上的defineProperty
已损坏
检查
并向铬项目汇报
好消息是你可以申请解决这个问题
为了使事情变得简单,您只需在捆绑包之前将polyfill复制并粘贴到
标签上即可
这将解决您的问题。在我的例子中,我解决了在入口点中添加babel register库的问题
在webpack.config.js(配置的webpack 1.x版本)中
我们在安卓4.0上遇到了这个问题,目前我们无法削减对安卓4.0的支持
对于Webpack1.0,当您使用BabelPresetEnv时,只需将其设置为宽松:true。
但是对于Webpack2,松散模式无法解决此问题
最后,我们发现了这个把戏,有点难看
// client_patch.js, For Android 4.0
var defineProperty = Object.defineProperty;
Object.defineProperty = function (exports, name) {
if (name === '__esModule') {
exports[name] = true;
return;
}
return defineProperty.apply(this, arguments);
};
并在您的网页包配置文件中
// webpack.config.js
entry: {
main: [
path.resolve(__dirname, 'client_patch.js'),
'index.js'
]
}
我不知道为什么会失败。它只在模块开始时分配一次,任何东西都不应该重新分配它,所以这个错误非常奇怪。你能看到它抛出实际错误的位置吗?它抛出第一个导入的模块,其中导出。u esModule=true;
存在。我假设在第一个对象之后。defineP调用roperty
,共享导出对象变为只读,以便分配在以后松散构建的模块中中断(但仅在提到的浏览器中抛出)。我可能完全没有注意到这一点,因为除了提供的链接之外,我似乎无法发现其他人有此问题。但这正是我感到困惑的地方。导出
不是共享的,它应该只局限于单个模块中。我将在稍后设置一个简单的项目来解决此问题,并将其附加到此处,以查看它是否揭示了任何内容。。。谢谢!我们鼓励您链接到外部资源,但请在链接周围添加上下文,以便您的其他用户了解它是什么以及为什么存在。请始终引用重要链接中最相关的部分,以防无法访问目标网站或永久脱机。
// client_patch.js, For Android 4.0
var defineProperty = Object.defineProperty;
Object.defineProperty = function (exports, name) {
if (name === '__esModule') {
exports[name] = true;
return;
}
return defineProperty.apply(this, arguments);
};
// webpack.config.js
entry: {
main: [
path.resolve(__dirname, 'client_patch.js'),
'index.js'
]
}