Module.exports: не является ошибкой конструктора - PullRequest
0 голосов
/ 01 ноября 2018

Может кто-нибудь объяснить, почему первый экспорт выдает ошибку is not a constructor, а второй экспорт работает?

// Throws a `is not a constructor` error
module.exports = {
    Person: function () {
        constructor()
        {
            this.firstname;
            this.lastname;
        }
    }
}

// Works
class Person {
    constructor()
    {
       this.firstname = '';
       this.lastname = '';
    }
}
module.exports = Person;

// Usage:
const Person = require("person");
let person = new Person();

1 Ответ

0 голосов
/ 01 ноября 2018

Потому что в первый раз вы действительно экспортируете объект, содержащий свойство:

  module.exports = { /*...*/ };

И вы не можете построить этот объект. Однако вы можете получить свойство Person и сконструировать это:

 const Person = require("person").Person;
 new Person();

Вы также можете деструктурировать импортированный объект:

 const { Person } = require("person");
 new Person();

... но это имеет смысл, только если туда экспортируются другие вещи, иначе я бы пошел с v2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...