web-dev-qa-db-fra.com

"La classe étend la valeur # <Object> n'est pas un constructeur ou null"

Merci d'avoir lu mon message, j'obtiens cette erreur sur mon code: "La classe étend la valeur # n'est pas un constructeur ou null" Voici mon code, j'essaie d'exporter/importer des classes.

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;

minimonster.js:

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;

Merci pour toute aide apportée,

Bonne journée

8
Charlote22

Je vois au moins un problème avec vos besoins.

  • monster.js La première ligne est const miniMonster = require("./minimonster.js");
  • minimonster.js La première ligne est const monster = require("./monster.js");

C'est un problème, vous ne pouvez pas faire évaluer les deux fichiers en même temps. Je n'aurais pas besoin de minimonster de monster.js

Cela peut résoudre votre problème.

5
kigiri

Lorsque je reçois ce message d'erreur, c'est parce que j'ai fait mon module.exports faux. par exemple.

publicclass.js

class PublicClass {
.....
}

module.exports.PublicClass = PublicClass;

au lieu de

module.exports = PublicClass;
2
Dave Pile