我在$ 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
中 strict: false
和strictMode: false
query
{
test: /\.js$/,
include: /bower_components/, //only thirdparty
loader: 'babel',
query: {
strict: false,
plugins: [__dirname + '/babel-plugins/custom-plugin']
}
}
和strict: false
带插件
strictMode: false
在{
test: /\.js$/,
include: /bower_components/, //only thirdparty
loader: 'babel',
query: {
plugins: [
[__dirname + '/babel-plugins/custom-plugin', {strict: false}]
]
}
}
state.opts.strict
内Program
将custom-plugin.js
设置为false(但这不起作用,因为babylon解析代码并在将AST关闭以进行遍历之前失败)
module.exports = function (params) {
return {
visitor: {
Program: function (path, state) {
state.opts.strict = false;
}
}
};
};
在blacklist
和webpack.config.js
中使用.babelrc
(已在babel v6中删除,因此无论如何都不行)
{
test: /\.js$/,
include: /bower_components/, //only thirdparty
loader: 'babel',
query: {
plugins: [__dirname + '/babel-plugins/custom-plugin']
}
}
我可以想到这个问题的一些hacky解决方案,但是这个标志应该可以通过babel-loader
或.babelrc
以某种形式在表面上访问。
答案 0 :(得分:0)
只需更改您的预设。这可能会有所帮助。
presets: [
'es2015'
]
成为
presets: [
['es2015', {modules: false}]
]