我有以下代码...
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?
更新
答案 0 :(得分:1)
您具有循环依赖项。
index.mjs
加载BasePage.mjs
BasePage.mjs
在运行Other.mjs
之前先加载export class BasePage {}
Other.mjs
加载Section.mjs
Section.mjs
跳过BasePage.mjs
,因为它已从步骤2开始进行。Section.mjs
尝试运行export class Section extends BasePage { /* ... */ }
,这是由于步骤2中的export class BasePage {}
尚未运行而抛出的。您尚未说明为什么需要在Other
内导入BasePage
,因此很难推荐更改,但是从本质上讲您不想这样做。