Как использовать класс, скомпилированный babel, в проекте узла?

Вот очень простой класс, который я тестирую, написанный в 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 ответ

Решение

1) Вы можете import по умолчанию из модуля в ES и переносить их:

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

2) Вы можете экспортировать Car класс, транспорт и 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');
Другие вопросы по тегам