如何在节点项目中使用babel编译的类?

时间:2016-03-16 20:59:49

标签: node.js ecmascript-6 babeljs transpiler

这是一个非常简单的类,我正在测试在es2015中编写:

"use strict";

class Car {
    constructor(color) {
        this.color = color;
    }
}

export default Car;

我使用babel-cli来转换该类,因此可以在节点中使用...这是输出:

"use strict";

Object.defineProperty(exports, "__esModule", {
    value: true
});

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

var Car = function Car(color) {
    _classCallCheck(this, Car);

    this.color = color;
};

exports.default = Car;

在我的节点项目中,我包含了这样的模块:

var Car = require("js-models/lib/Car");

但是当我做以下操作时,我得到一个“汽车不是功能”错误:

var blueCar = new Car('blue');

如果在这种情况下有所不同,我正在运行节点v5.8吗?

1 个答案:

答案 0 :(得分:1)

1)您可以从ES中的模块import默认并转换它们:

import Car from 'js-models/lib/Car';
let blueCar = new Car('blue');

2)您可以导出Car类,transile和require

// module js-models/lib/Car
"use strict";

export class Car {
    constructor(color) {
        this.color = color;
    }
}

// node project
var Car = require("js-models/lib/Car").Car;    
var blueCar = new Car('blue');