如何修复“类扩展值未定义不是构造函数或 null”NodeJS

Yim*_*ura 5 extends class node.js

我有 3 个文件结构,按以下顺序排列,所有这些都包含 1 个类

main.js extends events
events.js extends base
base.js
Run Code Online (Sandbox Code Playgroud)

我已经研究了这些答案,但我的问题似乎并不像以下人员描述的那样。 类型错误:类扩展值未定义不是函数或 null

main.js

const { Events } = require('./events.js');

module.exports = class Main extends Events {
    constructor(token) {
        super();

        // Some code
    }
}
Run Code Online (Sandbox Code Playgroud)

事件.js

const { Base } = require('./base.js');

module.exports = class Events extends Base {
    constructor() {
        super();
    }

    // more code
}
Run Code Online (Sandbox Code Playgroud)

基础.js

module.exports = class Base{
    constructor() {
        // Code
    }
}
Run Code Online (Sandbox Code Playgroud)

我无法初始化主类,index.js因为这会导致以下错误:

module.exports = class Events extends Base {
                                      ^

TypeError: Class extends value undefined is not a constructor or null
Run Code Online (Sandbox Code Playgroud)

我是否以某种方式要求以循环方式上课?我不确定我在这里缺少什么。

jfr*_*d00 10

您可能通过在 index.js 中导入外部模块的方式创建某种循环依赖循环。

但是,看来大多数情况下您只需要对此进行更改:

const { Base } = require('./base.js');
Run Code Online (Sandbox Code Playgroud)

对此:

const Base = require('./base.js');
Run Code Online (Sandbox Code Playgroud)

从此:

const { Events } = require('./events.js');
Run Code Online (Sandbox Code Playgroud)

对此:

const Events = require('./events.js');
Run Code Online (Sandbox Code Playgroud)

当你做这样的事情时:

const { Base } = require('./base.js');
Run Code Online (Sandbox Code Playgroud)

它正在查找名为 的导入模块的属性Base,但没有这样的属性。您将该类作为整个模块导出。因此,这就是您需要分配给变量Base(整个模块)的内容:

const Base = require('./base.js');
Run Code Online (Sandbox Code Playgroud)

如果 index.js 中导入 main.js 的代码尚未正确完成,则也必须正确完成。