Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js需要具有构造函数参数的类_Javascript_Node.js - Fatal编程技术网

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

Javascript Node.js需要具有构造函数参数的类,javascript,node.js,Javascript,Node.js,我有一节课 class advertHandler { constructor(projects) { this.projects = projects; } getProject(name) { return this.projects[name]; } } module.exports = new advertHandler(projects); 当我试着这样使用它的时候 const advertHandler = re

我有一节课

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不是一个函数
,但是没有构造函数,一切都很好,所以问题是如何将类构造函数与require一起使用?

它不是说
require
不是一个函数,而是说
require(…)
不是一个函数。:-)您正试图调用
require(…)
的结果,但您正在导出的(一个
advertdhandler
的实例)不是函数。还要注意,在
advertHandler.js
中,您试图使用一个名为
projects
的全局变量(在最后一行);理想情况下,如果可以避免的话,最好在NodeJS应用程序中使用globals

您只想导出该类:

module.exports = advertHandler;
…然后在调用之前可能需要它:

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

AdverHandler.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'));

检查此答案是否可以在单行中执行?类似于
constAdvertHandler=newrequire('./advertHandler')({test:“one”})
@A-letubby:是的,但可读性较差:
consthandler=new(require('./advertdhandler'))({test:“one”})
(注意
require
调用周围的
()
)。