Obecnie mam plik hero.js w katalogu i wygląda to tak

let Person = class PersonClass {
    constructor(name) {

        ...

class Hero {
    constructor(name, level) {

        ...

class Mage extends Hero {
    constructor(name, level, spell) {

        ...

Następnie w innym pliku chcę użyć tych klas.

Więc mam:

require("./hero");

const manny = new Hero("Manny", 12);
const george = new Person("George");

I ani george, ani manny nie pracują, obaj rzucają Reference Error: Person/Hero is not defined.

Kiedy mam kod klasy Person lub Hero w pliku powyżej george and manny, działają one poprawnie.

Chcę wiedzieć, jak przenieść definicje klas do innego pliku i require je w innym pliku.

0
Rentsy 20 listopad 2019, 22:35
Jakie środowisko: przeglądarka czy coś takiego jak węzeł? W przeglądarce wystarczy upewnić się, że skrypt bohatera znajduje się na stronie przed innym skryptem, a klasy zdefiniowane globalnie lub w jakimś dostępnym zakresie. Nie ma potrzeby.
 – 
Patrick Evans
20 listopad 2019, 22:40
Spróbuj spojrzeć na różne składnie (CommonJS vs ES6) — stackoverflow.com/questions/40294870/…
 – 
muka.gergely
20 listopad 2019, 22:47

1 odpowiedź

To bardzo proste. powinieneś użyć export

let Person = class PersonClass {
    constructor(name) {

        ...

class Hero {
    constructor(name, level) {

        ...

class Mage extends Hero {
    constructor(name, level, spell) {


export const Person
export const Hero
export const Mage

W innym pliku

import {Person, Hero, Mage} from './hero'
-1
Giorgi Lagidze 20 listopad 2019, 22:41
Giorgi, próbowałem po prostu odrzucić twoją sugestię i napotkałem problem ``` import {Person, Hero, Mage} from './hero' ^ SyntaxError: Unexpected token { ```
 – 
Rentsy
20 listopad 2019, 23:27