ES6类,父级在不同的文件中,node.js?

时间:2016-03-30 21:15:45

标签: javascript node.js

在node.js中使用在一个文件中定义的类并将其扩展为另一个文件的正确方法是什么?

目前我有:

'use strict'

class BasePageHandler {

    constructor(app, settings, context) {

    }
}

return module.exports;

在孩子中'我有类文件:

'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那么它可以正常工作,所以实际上当这个类在另一个文件中时我有问题。

目前使用节点4.4.0。

2 个答案:

答案 0 :(得分:32)

您需要在module.exports = BasePageHandler; 文件中正确导出您的课程:

{{1}}

答案 1 :(得分:9)

接受的答案在技术上很好,但是如果你使用的是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;
    }
}