使用browserify进行babelify 6,es2015预设不起作用

我试图使用新的babel版本,并尝试使用es2015预设babel似乎不能理解箭头功能?

我在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 require hook,同样的问题。

编辑

好的,我已经缩小到阶段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?


这是一个Babeljs错误

看到

  • 具有类属性的子类(不带构造函数)错误#2942
  • [Regression BUG]类范围函数显示SyntaxError:'this'在super()#2971之前是不允许的
  • 希望这将看到一个快速修复。

    编辑 #2942没有引用相同的错误。 以下是此错误后的问题:#3028


    这取决于你如何执行browserify,这是babelify的Github存储库(https://github.com/babel/babelify)所说的:

    从CLI中:

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

    使用节点:

    browserify("./script.js")
      .transform("babelify", {presets: ["es2015", "react"]})
      .bundle()
      .pipe(fs.createWriteStream("bundle.js"));
    
    链接地址: http://www.djcxy.com/p/5635.html

    上一篇: babelify 6 with browserify and the es2015 preset is not working

    下一篇: Uglify bundled JS from Browserify