我只是将代码用作有关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');

错误在最后一行中产生。

最佳答案

您正在导出同时包含SimpleLoggerDEFAULT_LEVEL的对象,因此要在main.js中使用它,您需要像这样正确引用它

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

如果只想导出SimpleLogger,则可以像这样更改导出
module.exports = SimpleLogger

然后,您可以像在代码中一样要求SimpleLogger

07-24 16:22