Ошибка типа: не является конструктором - PullRequest
3 голосов
/ 24 марта 2019

Я просто использую код в качестве упражнения для изучения классов JavaScript.

Код выдает «TypeError: SimpleLogger не является конструктором».Класс, похоже, экспортирован. Хорошо, но я не могу создать его экземпляр в файле main.js.

Я сократил код, чтобы просто показать проблему.Мне было интересно, если кто-нибудь может определить проблему.Спасибо.

// In simplelogger.js
"use strict";
class SimpleLogger {
    constructor(level) {
        this.level = level || DEFAULT_LEVEL;
    }

    // .... other methods
}

const DEFAULT_LEVEL = 'info';

module.exports = {
    SimpleLogger,
    DEFAULT_LEVEL
}

// In main.js
"use strict";
const SimpleLogger = require('./simplelogger.js');

let log = new SimpleLogger('info');

Ошибка выдается в последней строке.

1 Ответ

2 голосов
/ 24 марта 2019

Вы экспортируете объект, содержащий как SimpleLogger, так и DEFAULT_LEVEL, поэтому, чтобы использовать его в main.js, вам нужно правильно ссылаться на него, например

const SimpleLogger = require('./simplelogger.js').SimpleLogger;
let log = new SimpleLogger('info');

Если вы хотите экспортировать SimpleLogger, вы можете изменить свой экспорт следующим образом:

module.exports = SimpleLogger

Тогда вы можете потребовать SimpleLogger, как вы делаете в своем коде.

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