如何在使用webpack捆绑React时禁用严格模式

Dha*_*tel 8 reactjs webpack

您好,我被我的应用程序困住了,我的应用程序在所有其他浏览器中工作正常,而不是在IE中它会抛出错误

0x800a0416 - JavaScript runtime error: Multiple definitions of a property not allowed in strict mode
Run Code Online (Sandbox Code Playgroud)

我在webpack.config中实现了loader

  module: {
    loaders: [{
        test: /\.js?$/,
        exclude: /(node_modules|bower_components)/,
        loaders: ['babel'],
        include: path.join(__dirname, 'scripts')
    }]
}
Run Code Online (Sandbox Code Playgroud)

和我的Package.json脚本包含"build": "./node_modules/.bin/webpack --config webpack.config.production.js --progress --profile --colors",用于构建捆绑包

如果我将明确地use strict从bundle中找到并将其删除,那么它可以正常工作,那么如何在使用webpack创建包时删除该严格模式

iva*_*rni 8

如果您看到该错误,那么很可能您已经在代码库中的某个位置声明了同一对象上的多个属性.禁用警报铃声只是修复了症状.

如果我在JSX中声明重复属性,例如在执行<MyComponent className="foo" onClick={onClick} className="foobar" />或意外复制其他属性时,我发现此错误会弹出.

查找并修复实际错误,而不是仅仅抑制错误消息.IE应该告诉你它正在发生什么线,并且不应该太难看出那里有什么,并找出哪个组件有问题.

  • 谢谢你.因为我使用的是browser.js,所以我没有从IE获得特定的行号,但是我浏览了一下并在元素上找到了多个id属性. (2认同)

cre*_*ers 5

查看此包:https://www.npmjs.com/package/babel-plugin-transform-remove-strict-mode

我一直在寻找一种方便的方法来摆脱它'use strict',它似乎就是这样做的。


Dha*_*tel 2

我已在.babelrc文件中包含黑名单选项,例如

 blacklist: ["useStrict"]
Run Code Online (Sandbox Code Playgroud)

并且运行良好。