babel-loader:模块构建失败:SyntaxError:在严格模式下删除局部变量

时间:2016-10-11 21:31:10

标签: javascript node.js webpack babeljs strict-mode

我在$ perl -e' use open ":std", ":encoding(UTF-8)"; use HTML::Entities qw( decode_entities ); CORE::say decode_entities($_) for "®", "Ω", "★"; ' ® Ω ★ 中使用babel-loader和一个自定义babel-plugin将一些第三方代码转换为一种格式,可以毫无问题地通过Webpack的捆绑包。但是,当我的代码通过babel的解析器(babylon)运行来构建AST时,我收到以下错误:

webpack

我在bably中找到了触发此消息的行:https://github.com/babel/babylon/blob/master/src/parser/expression.js#L236

查看该代码,似乎我应该能够通过将Module build failed: SyntaxError: Deleting local variable in strict mode设置为this.state.strict来禁用babylon中的严格模式解析。问题是我不知道如何从false设置this.state.strict。我希望其他人更了解这一点。

以下是我迄今为止尝试过的一些事情:

    babel-loader

  1. strict: falsestrictMode: false

    query
  2. { test: /\.js$/, include: /bower_components/, //only thirdparty loader: 'babel', query: { strict: false, plugins: [__dirname + '/babel-plugins/custom-plugin'] } } strict: false带插件

    strictMode: false
  3. { test: /\.js$/, include: /bower_components/, //only thirdparty loader: 'babel', query: { plugins: [ [__dirname + '/babel-plugins/custom-plugin', {strict: false}] ] } } state.opts.strictProgramcustom-plugin.js设置为false(但这不起作用,因为babylon解析代码并在将AST关闭以进行遍历之前失败)

    module.exports = function (params) {
        return {
            visitor: {
                Program: function (path, state) {
                    state.opts.strict = false;
                }
            }
        };
    };
    
  4. blacklistwebpack.config.js中使用.babelrc(已在babel v6中删除,因此无论如何都不行)

    {
        test: /\.js$/,
        include: /bower_components/, //only thirdparty
        loader: 'babel',
        query: {
            plugins: [__dirname + '/babel-plugins/custom-plugin']
        }
    }
    
  5. 我可以想到这个问题的一些hacky解决方案,但是这个标志应该可以通过babel-loader.babelrc以某种形式在表面上访问。

1 个答案:

答案 0 :(得分:0)

只需更改您的预设。这可能会有所帮助。

presets: [
'es2015'
]

成为

presets: [
['es2015', {modules: false}]
]