【问题标题】:babelify 6 with browserify and the es2015 preset is not workingbabelify 6 与 browserify 和 es2015 预设不起作用
【发布时间】:2015-11-10 15:53:59
【问题描述】:

我正在尝试使用新的 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() 当我实际上接到super() 电话时。

编辑

用一些 es7 设置一个简单的测试应用程序,并尝试使用 babel-core 的 require 钩子,同样的问题。

编辑

好的,所以我已将其范围缩小到在 babeljs 6^ 中以不同方式工作的 stage-0。

这是我注意到的:

运行文件

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 的?

【问题讨论】:

  • 你是如何执行 browserify/babelify 的?您安装了哪些版本的模块?
  • 我正在通过module-deps 执行,一切都是最新版本。

标签: browserify babeljs


【解决方案1】:

这是一个 Babeljs 错误

希望这会得到快速修复。

edit #2942 没有引用相同的错误。这是此错误之后的一个问题:#3028

【讨论】:

  • #2942 已关闭,他们说 6.1.18 已修复。只是 npm 更新并添加了箭头功能。还是坏了。如果它产生差异,那就是 babelify。
  • 同样,我仍然遇到各种错误,据说 Babel6 修复了错误,试图重组我在 5 中完全正常的类,......有点累了。
  • 我要测试一下,看看是否还能重现错误。但来自他们的博客:“并非所有集成都已更新。这是一个非常具有破坏性的专业,所以请耐心等待我们平滑边缘。”所以我建议坚持使用 5 直到大部分错误被修复
  • 我可以确认这不是固定的
  • 也有这个问题,而且问题的链接现在都失效了
【解决方案2】:

这在一定程度上取决于您执行 browserify 的方式,这就是 babelify (https://github.com/babel/babelify) 的 Github 存储库所说的:

来自 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"));

【讨论】:

  • transform("babelify", {presets: ["es2015", "react"]}) 是什么不起作用
  • 您安装了预设吗? npm install --save-dev babel-preset-es2015
  • gulp 的预设似乎根本不起作用。令人沮丧的是一切变化的频率。一个版本的 babelify 只做一件事,而下一个版本发生了很多变化..
  • 感谢您为我阐明 CLI 语法!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
  • 2016-04-07
  • 1970-01-01
  • 2017-01-05
  • 1970-01-01
  • 2018-04-18
  • 1970-01-01
相关资源
最近更新 更多