Я пытаюсь использовать новый релиз babel, и, пытаясь использовать предустановленный babel es2015, похоже, не может понять функции стрелок?
Моя настройка на pre-babel6 была следующей:
transform: [['babelify', {sourceMap: false, stage: 0, optional: 'runtime', ignore: ["*.min.js"]}]]
и с babel6
transform: [['babelify', {"presets": ["es2015"]}]]
который не работает. Почему это?
изменить
Добавление "stage-0"
избавилось от сообщений об ошибках синтаксиса, но остановило меня на возможности продлить что-либо с ошибкой: 'this' is not allowed before super()
, когда у меня есть infact, получен вызов super()
.
изменить
Настройте простое тестовое приложение с некоторыми es7 и попытайтесь использовать привязку babel-core, чтобы проблема была связана с этой проблемой.
изменить
Итак, я сузил его до стадии-0, работая по-разному в babeljs 6 ^.
Вот что я заметил:
Запустить файл
require("babel-core/register")(
{
presets: ["es2015", "stage-0"]
}
);
require("./app.js");
Работает с:
class extendable {
constructor() {
console.log('extended')
}
}
class app extends extendable {
constructor() {
super();
this.method();
this.method2();
}
method() {
// arrow functions
setTimeout(() => {
console.log("works")
}, 1000)
}
/**
* arrow function method
*/
method2 = () => {
console.log('works')
}
}
new app();
Не работает с:
class extendable {
constructor() {
console.log('extended')
}
}
class app extends extendable {
constructor() {
super();
this.method();
this.method2();
}
method() {
// arrow functions
setTimeout(() => {
console.log("works")
}, 1000)
}
/**
* arrow function method
*/
method2 = () => {
// give an error: 'this' is not allowed before super()
this.state = "hello";
}
}
new app();
Итак, я немного смущен. Это действительно неправильный синтаксис? Как я мог использовать этот pre-babel6?