ES6, с родителем в другом файле и node.js?

Каков правильный способ использования класса, определенного в одном файле, и продлить его другим, в node.js?

В настоящее время у меня есть:

'use strict'

class BasePageHandler {

    constructor(app, settings, context) {

    }
}

return module.exports;

В файле класса "child" у меня есть:

'use strict'

var BasePageHandler = require ('./../BasePageHandler.js');

class FrontpagePageHandler extends BasePageHandler {
    constructor(app, settings, context) {
         super(app, settings, context);
         this.settings = settings;
         this.context = context;
    }
}

Это не выполняется со следующей ошибкой:

TypeError: Class extends value #<Object> is not a function or null

Обратите внимание, что если у меня есть BasePageHandler в том же файле, тогда он работает, поэтому действительно, когда класс находится в другом файле, у меня есть проблема.

В настоящее время используется node 4.4.0.

Ответы

Ответ 1

Вам нужно правильно экспортировать свой класс в файл BasePageHandler.js:

module.exports = BasePageHandler;

Ответ 2

Принятый ответ технически хорош, но на самом деле, если вы используете ES6, вам нужно пойти и использовать ES6 export/import.

/*jshint esversion: 6 */

class BasePageHandler {
    constructor(app, settings, context) {
    }
}

export default BasePageHandler;

а затем:

/*jshint esversion: 6 */

import BasePageHandler from './../BasePageHandler.js';

class FrontpagePageHandler extends BasePageHandler {
    constructor(app, settings, context) {
         super(app, settings, context);
         this.settings = settings;
         this.context = context;
    }
}