Почему я получаю ошибку Reference, когда пытаюсь расширить класс из внешнего класса с помощью JS - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть следующий код ...

class BasePage{
    constructor(driver){
        ...
    }

}
class Section extends BasePage{
    constructor(driver, parent){
        super(driver);
        ...
    }
    ...
}
export {BasePage, Section}

Однако, похоже, это работает, когда я пытаюсь переместить раздел в свою папку и файл, подобный этому ...

import {BasePage} from "../BasePage";

export class Section extends BasePage{
    constructor(driver, parent){
        super(driver);
    }
}

Я получаю сообщение об ошибке ...

(узел: 12480) UnhandledPromiseRejectionWarning: ReferenceError: BasePage не определено

в файле ... Section.mjs

Это не имеет никакого смысла для меня, и если я возьму расширение и попытаюсь создать экземпляр, оно прекрасно работает ...

export class Section{
    constructor(driver, parent){
        new BasePage(driver); // works fine
    }
}

Что здесь происходит?Почему я получаю BasePage не определено?

Обновление

Вот полный код

1 Ответ

0 голосов
/ 18 декабря 2018

У вас круговая зависимость.

  1. index.mjs загружает BasePage.mjs
  2. BasePage.mjs загружает Other.mjs перед запуском export class BasePage {}
  3. Other.mjs загружает Section.mjs
  4. Section.mjs пропускает BasePage.mjs, поскольку он уже выполняется с шага 2.
  5. Section.mjs пытается запустить export class Section extends BasePage { /* ... */ }, что приводит к тому, что export class BasePage {} из шага 2 еще не выполнено.

Вы не показали, почему вам нужно импортировать Other в BasePage, поэтому трудно рекомендовать изменения, но по сути вы захотитене делать этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...