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

时间:2016-01-20 17:56:01

标签: reactjs webpack

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

0x800a0416 - JavaScript runtime error: Multiple definitions of a property not allowed in strict mode

我在webpack.config中实现了加载器

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

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

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

4 个答案:

答案 0 :(得分:8)

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

如果我在JSX中声明重复属性,我发现这个错误会弹出,例如在做<MyComponent className="foo" onClick={onClick} className="foobar" />或意外复制其他一些财产时。

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

答案 1 :(得分:2)

我在 .babelrc 文件中添加了黑名单选项,例如

 blacklist: ["useStrict"]

它工作正常。

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

由于您使用了webpack,因此您几乎没有办法在.babelrc或webpack中设置底线设置为false

webpack.mix.js

module : {
        loaders : [
            {
                test: /\.js?/,
                include: APP_DIR,
                use: {
                    loader: 'babel-loader',
                    options: {
                        "presets": [
                            ['es2015', {modules: false}]
                        ],
                    }
                },
                exclude: /node_modules/
            },
        ]
    },

或.babelrc

{
    "presets": [
        [
            "@babel/preset-env",
            {
                "debug": true,
                "modules": false,
                "forceAllTransforms": true,
                "useBuiltIns": "usage"
            }
        ]
    ]
}