No.js exigem a classe com o parâmetro do construtor

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

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


module.exports = new advertHandler(projects);

Quando tento usá - lo assim

const advertHandler = require('./advertHandler')(projectsArray);
advertHandler.getProject('test');
E abre uma excepção, mas sem construtor está tudo bem, por isso a questão é como usar o construtor de classes com require?

Author: MyMomSaysIamSpecial, 2017-03-02

1 answers

Não está a dizer que require não é uma função, está a dizer require(...) não é uma função. :- ) Você está tentando chamar {[13] } o resultado de require(...), mas o que você está exportando (uma instância de advertHandler) não é uma função. Note também que em advertHandler.js, Você está tentando usar um global chamado projects (na última linha); idealmente, é melhor ter globais em aplicativos NodeJS quando você pode evitá-lo.

Você só quer exportar a classe:

module.exports = advertHandler;

...e, provavelmente, exigi-lo antes de ligar. it:

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

Por exemplo:

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'));
 11
Author: T.J. Crowder, 2017-03-02 11:13:51