Javascript &引用;类扩展值#<;对象>;不是构造函数或空";

Javascript &引用;类扩展值#<;对象>;不是构造函数或空";,javascript,es6-class,Javascript,Es6 Class,谢谢你阅读我的帖子 我在代码中遇到了这样的错误:“类扩展值#不是构造函数或null” 这是我的代码,我正在尝试导出/导入类 monster.js: const miniMonster = require("./minimonster.js"); class monster { constructor(options = { name }, health) { this.options = options; this.health = 100; this.heal =

谢谢你阅读我的帖子 我在代码中遇到了这样的错误:“类扩展值#不是构造函数或null” 这是我的代码,我正在尝试导出/导入类

monster.js:

const miniMonster = require("./minimonster.js");

class monster {
  constructor(options = { name }, health) {
    this.options = options;
    this.health = 100;
    this.heal = () => {
      return (this.health += 10);
    };
  }
}

let bigMonster = new monster("Godzilla");
console.log(bigMonster);

console.log(bigMonster.heal());

let mini = new miniMonster("Demon");
console.log(mini);
console.log(mini.heal());

module.exports = monster;
const monster = require("./monster.js");

class miniMonster extends monster {
  constructor(options) {
    super(options);
    this.health = 50;
    this.heal = () => {
      return (this.health += 5);
    };
  }
}

let miniM = new miniMonster("Jon");
console.log(miniM);

module.exports = miniMonster;
minimonster.js:

const miniMonster = require("./minimonster.js");

class monster {
  constructor(options = { name }, health) {
    this.options = options;
    this.health = 100;
    this.heal = () => {
      return (this.health += 10);
    };
  }
}

let bigMonster = new monster("Godzilla");
console.log(bigMonster);

console.log(bigMonster.heal());

let mini = new miniMonster("Demon");
console.log(mini);
console.log(mini.heal());

module.exports = monster;
const monster = require("./monster.js");

class miniMonster extends monster {
  constructor(options) {
    super(options);
    this.health = 50;
    this.heal = () => {
      return (this.health += 5);
    };
  }
}

let miniM = new miniMonster("Jon");
console.log(miniM);

module.exports = miniMonster;
谢谢你的帮助


祝你有愉快的一天

我发现你的要求至少有一个问题

  • monster.js
    第一行是
    const miniMonster=require(“./miniMonster.js”)
  • minimonster.js
    第一行是
    const monster=require(“./monster.js”)
这是一个问题,您不能让两个文件同时求值。 我不需要
monster.js


这可能会解决您的问题。

当我收到此错误消息时,这是因为我完成了
模块。导出错误。
例如

publicclass.js

class PublicClass {
.....
}

module.exports.PublicClass = PublicClass;
而不是

module.exports = PublicClass;

我按照下面的行使用

import Base from "./base

现在工作正常了

对于我来说,我引入了循环依赖项。

正确的代码:

//Export from monster.js (but don't import minimonster.js)
class monster {
.....
}
let bigMonster = new monster("Godzilla");
module.exports = monster;

//Import in minimonster.js
const monster = require("./monster.js");
class miniMonster extends monster {
.....
}
let miniM = new miniMonster("Jon");
module.exports = miniMonster;
当模块A依赖于模块B中的某个内容而模块B依赖于模块A中的某个内容时,就会发生循环依赖。这意味着要编译模块A,必须先编译模块B,但不能这样做,因为B要求A已经编译


因此,为了避免循环依赖,我们不应该在同一个模块(monster.js)中导入导出模块(monster.js)的模块(minimonster.js)。

请您控制monster的内容。我建议您重构代码以消除循环依赖,因为它可能会变得混乱。您可以添加第三个类来管理这两个文件。这两个文件不是互相包含吗?一个类可能在某一点上没有定义,我甚至没有考虑查看导出。这个给我修好了。谢谢