babel-loader: сборка модуля не удалась: SyntaxError: удаление локальной переменной в строгом режиме
Я использую babel-loader
в webpack
с пользовательским плагином babel для преобразования какого-либо стороннего кода в формат, который без проблем проходит через упаковщик Webpack. Однако, когда мой код проходит через анализатор babel (babylon) для построения AST, я получаю следующую ошибку:
Module build failed: SyntaxError: Deleting local variable in strict mode
Я нашел строку в баблоне, которая вызывает это сообщение: https://github.com/babel/babylon/blob/master/src/parser/expression.js#L236
Глядя на этот код, кажется, что я должен иметь возможность отключить синтаксический анализ строгого режима в Babylon, установив this.state.strict
в 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
(но это не должно работать, потому что 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'] } }
Я могу подумать о некоторых хакерских решениях этой проблемы, но этот флаг должен быть доступен на поверхности через babel-loader
или же .babelrc
в той или иной форме.
1 ответ
Просто измените свои предустановки. Это могло помочь.
presets: [
'es2015'
]
быть
presets: [
['es2015', {modules: false}]
]