【问题标题】:Trying to export a class as a module ES6 babel尝试将类导出为模块 ES6 babel
【发布时间】:2015-03-30 03:29:17
【问题描述】:

我有一个 ES6 类,我试图将其导出为模块,但是我收到一个错误 SyntaxError: Unexpected reserved word

Car.js

class Car {
    constructor(make) { 
        this.make = make;
        this.currentSpeed = 25;
    }

    printCurrentSpeed(){
          console.log(this.make + ' is going ' + this.currentSpeed + ' mph.');
    }
}

module.exports = Car;

我正在尝试像这样使用 Car 模块

main.js

var Car = require("./models/Car");

let must = new Car('Mustang');
console.log(must.printCurrentSpeed());

我正在使用 browserify 和 babelify 来转换到 ES6

browserify -t babelify main.js -o public/scripts/bundle.js",

我是否正确导出了 Car 模块,还是我做错了什么?

【问题讨论】:

  • 似乎没有进行转换,或者您没有执行正确的文件。

标签: javascript browserify ecmascript-6 babeljs


【解决方案1】:

需要 babel/register 会解决您的问题吗?

require('babel/register');

如此处所述:https://babeljs.io/docs/usage/require/

节点所需的所有后续文件扩展名为 .es6、.es、.jsx 和 .js 将由 Babel 转换。 polyfill 也是自动需要的。

【讨论】:

    【解决方案2】:

    我的问题是我正在开发一个同构的 React.js 应用程序,并且 babelify browserify 转换很好,我的 bundle.js 文件也被很好地转译了。这是我脚本的服务器端部分的问题,因为它没有使用 babel 编译为 ES6。

    我希望这并不意味着我需要在我的源文件中复制我的 ES6 和 ES5,因为这是我试图避免的,并且通过 browserify babelify 转换,我能够在 ES6 中进行编码并且只是指向 main.js 文件。

    这是我的 example react server repository 我基于此,我基本上是使用 node-jsx 从节点内透明地 require() jsx,所以我只需要一种使用 babel 的方法。

    require('node-jsx').install(); 
    var express = require('express');
    var React = require('react');
    var APP = require('./app'); // the JSX app with calls to ES6 modules
    var app = express();
    var port = 3000;
    var ip = '127.0.0.1';
    
    app.get('/', function(req, res) {
      var markup = React.renderToString(APP());
      res.send(markup);
    });
    

    更新:我认为类似于 question 我可以使用 babel-node 或使用带有 --harmony 标志的节点来运行具有 es6 功能的脚本

    【讨论】:

      【解决方案3】:

      对此的答案是我可以使用babel-node 或使用带有--harmony 标志的node 来运行具有es6 功能的脚本。

      Here 是一些使用 babel-node server 的 alt/iso 同构 React 示例,它们演示了这种方法。

      【讨论】:

        猜你喜欢
        • 2016-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-07
        • 2016-12-11
        • 2020-11-08
        相关资源
        最近更新 更多