javascript - 类型错误 : is not a constructor

标签 javascript node.js electron

我只是将代码用作有关 JavaScript 类的学习练习。

代码产生“类型错误: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

关于javascript - 类型错误 : is not a constructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55318369/

相关文章:

node.js - 为 Electron 构建 node-usb

javascript - 如何使 ESM 在我的项目中与 Electron 一起工作?

javascript - Angular ng-bind-html 展开 anchor 标记

javascript - 获取 polyfill 在 Edge(或 IE)上不起作用

javascript - NodeJs 请求的资源上不存在 'Access-Control-Allow-Origin' header

node.js - 将环境变量从 gulp 注入(inject)到 webpack

javascript - 主干、js 和 node.js 渲染和路由

javascript - 在自定义对象上添加事件监听器

JavaScript - 对象的方法命名一次和命名两次之间的区别

javascript - 是否可以使用 C++ 作为 Electron.js 的后端?