Очень простая конфигурация Babel не работает, и я не знаю почему. Использование синтаксических плагинов вместо преобразователей работает , поэтому Babel может правильно проанализировать этот пример.
Я знаю, что использование предложения декораторов без { legacy: true }
приводит к ошибке, так как еще не определено, как частные члены будут взаимодействовать с декораторами. Однако в устаревшем предложении такой проблемы нет (или я так думал).
Конфигурация Babel:
module.exports = {
plugins: [
['@babel/proposal-decorators', { legacy: true }],
['@babel/proposal-class-properties', { loose: true }],
],
};
Файл для сборки:
class Foo {
@Decorator
#bar = '';
}
Попытка построения приводит к следующей ошибке (изменена только для удаления ненужной информации о пути):
TypeError: Property value expected type of string but got null
at Object.validate (./node_modules/@babel/types/lib/definitions/utils.js:161:13)
at validate (./node_modules/@babel/types/lib/validators/validate.js:17:9)
at builder (./node_modules/@babel/types/lib/builders/builder.js:46:27)
at Object.StringLiteral (./node_modules/@babel/types/lib/builders/generated/index.js:335:31)
at ./node_modules/@babel/plugin-proposal-decorators/lib/transformer-legacy.js:93:83
at Array.reduce (<anonymous>)
at applyTargetDecorators (./node_modules/@babel/plugin-proposal-decorators/lib/transformer-legacy.js:84:32)
at applyMethodDecorators (./node_modules/@babel/plugin-proposal-decorators/lib/transformer-legacy.js:70:10)
at PluginPass.ClassExpression (./node_modules/@babel/plugin-proposal-decorators/lib/transformer-legacy.js:156:94)
at newFn (./node_modules/@babel/traverse/lib/visitors.js:193:21)
Это выполняется при новой установке. Зависимости:
@babel/cli@^7.4.4
@babel/core@^7.4.5
@babel/plugin-proposal-decorators@^7.4.4
@babel/plugin-proposal-class-properties@^7.4.4
NB. На самом деле мне не нужно преобразовывать декораторы - это обрабатывается другим плагином. Я попытался заменить преобразователь декоратора на плагин синтаксиса, но затем я получаю сообщение об ошибке, в котором говорится, что декораторы не включены.
Это ошибка в Вавилоне? Во всяком случае, должно произойти сбой с «хорошим» сообщением об ошибке, а не случайной трассировкой стека.