Node.js 当我尝试使用JS从外部类扩展类时,为什么会出现引用错误
我有以下代码Node.js 当我尝试使用JS从外部类扩展类时,为什么会出现引用错误,node.js,ecmascript-6,Node.js,Ecmascript 6,我有以下代码 class BasePage{ constructor(driver){ ... } } class Section extends BasePage{ constructor(driver, parent){ super(driver); ... } ... } export {BasePage, Section} 这似乎是可行的,然而,当我试图将部分移动到它自己的文件夹和文件中时
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未处理PromisejectionWarning:ReferenceError:未定义BasePage
存档。。。第1.mjs节
这对我来说没有任何意义,如果我去掉扩展并尝试实例化它,它会很好地工作
export class Section{
constructor(driver, parent){
new BasePage(driver); // works fine
}
}
这是怎么回事?为什么我得到一个未定义的基页
更新
这是一个循环依赖项 index.mjs加载BasePage.mjs BasePage.mjs在运行导出类BasePage{}之前加载其他.mjs 其他.mjs荷载截面.mjs Section.mjs跳过BasePage.mjs,因为它已经从步骤2开始进行。 Section.mjs尝试运行导出类Section扩展BasePage{/*…*/},这会引发错误,因为步骤2中的导出类BasePage{}尚未运行。
您还没有说明为什么需要导入其他内部BasePage,因此很难推荐更改,但基本上您不希望这样做。请提供您的问题。我假设您有循环依赖关系,阻止在模块范围内访问BasePage。我想这样做,但我不确定如何充分隔离,我将对此进行处理。我假设它与某种循环依赖相关,但不确定为什么它在一个文件中工作,如果两个类都位于一个文件中,则不存在循环依赖。请发布整个文件。如果存在循环依赖关系,这两个模块可能会直接或间接地相互导入。我之所以导入其他模块,至少是因为我设想的基本页面是由其他页面组成的页面。其中一种类型的页面是section类型。导航是这些部分中的一部分,是基本页面的必要部分。在我的案例中,我通过创建、更改导入并使基本页面成为部分的支柱来解决它,但我并不特别喜欢这样