Подтвердить что ты не робот

Babelify 6 с браузером и пресет es2015 не работает

Я пытаюсь использовать новый релиз 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?

4b9b3361

Ответ 1

Это ошибка Babeljs

См.

Надеюсь, это увидит быстрое исправление.

edit # 2942 не ссылается на ту же ошибку. Вот проблема, следующая за этой ошибкой: # 3028

Ответ 2

Это немного зависит от того, как вы выполняете браузер, это то, что репозиторий Github из babelify (https://github.com/babel/babelify) говорит об этом:

Из CLI:

$ browserify script.js -o bundle.js \
-t [ babelify --presets [ es2015 react ] ]

С Node:

browserify("./script.js")
  .transform("babelify", {presets: ["es2015", "react"]})
  .bundle()
  .pipe(fs.createWriteStream("bundle.js"));