Node.js需要带有构造函数参数的类

时间:2017-03-02 11:05:37

标签: javascript node.js

我有一个班级

class advertHandler {
    constructor(projects) {
        this.projects = projects;
    }

    getProject(name) {
        return this.projects[name];
    }
}


module.exports = new advertHandler(projects);

当我尝试像这样使用它时

const advertHandler = require('./advertHandler')(projectsArray);
advertHandler.getProject('test');

它引发了一个异常require is not a function,但没有构造函数,一切都很好,所以问题是如何使用带有require的类构造函数?

1 个答案:

答案 0 :(得分:14)

它不是说require不是一个功能,它说require(...)不是一个功能。 :-)您正在尝试调用 require(...)的结果,但您要导出的内容(advertHandler的实例)是不是' ta功能。另请注意,在advertHandler.js中,您尝试使用全局调用projects(在最后一行);理想情况下,最好在NodeJS应用程序中使用全局变量来避免它。

您只想导出课程:

module.exports = advertHandler;

...然后在调用它之前可能需要它:

const advertHandler = require('./advertHandler');
const handler = new advertHandler({test: "one"});
console.log(handler.getProject('test'));

E.g:

advertHandler.js:

class advertHandler {
    constructor(projects) {
        this.projects = projects;
    }

    getProject(name) {
        return this.projects[name];
    }
}

module.exports = advertHandler;

app.js:

const advertHandler = require('./advertHandler');
const handler = new advertHandler({test: "one"});
console.log(handler.getProject('test'));