感谢您阅读我的主题,今天,我对es6中的类有一个疑问,我不为什么在运行时vi go错误。 我有A类:
var B = require("./b");
class A{
constructor() {
console.log("Constructor class A");
}
helloLoop() {
console.log("A: Hello loop");
B.hello();
}
helloWithoutLoop() {
console.log("A: Hello without loop");
}
}
module.exports = new A();
和B级:
var A = require("./a");
class B{
constructor() {
console.log("Constructor class B");
}
hello() {
console.log("B: Hello");
A.helloWithoutLoop();
}
}
module.exports = new B();
和测试:
var A = require("./a");
var B = require("./b");
A.helloLoop();
运行测试时,我收到错误消息:
A.helloWithoutLoop();
TypeError: A.helloWithoutLoop is not a function
at B.hello ({work-sapce}\test\b.js:9:11)
我没有那件事! 请帮我! 非常感谢!
答案 0 :(得分:0)
您具有循环依赖关系。您的主文件要求A,要求B,要求B,要求A(圆形)。做不到在A本身完成加载之前第二次要求A的尝试将返回websitePageChangeNumber = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//span[@class='websitePage-relativeChangeNumber']"))).get_attribute("innerHTML")
,这就是为什么您会收到奇怪的错误的原因。
通常的解决方案是找到通用代码,并将其放在第三个模块中,其他两个模块都可以加载而没有A加载B和B加载A。
具有A加载C和B加载C。
或更简单的是,只需将A和B放在同一个文件中,这样它们之间就不会循环加载。
答案 1 :(得分:0)
您可以这样称呼他们:
import A from './A';
import B from './B';
A.helloLoop();
这是A类:
import B from './B';
class A{
constructor() {
console.log("Constructor class A");
}
helloLoop() {
console.log("A: Hello loop");
B.hello();
}
helloWithoutLoop() {
console.log("A: Hello without loop");
}
}
export default new A();
这是B类:
import A from './A';
class B{
constructor() {
console.log("Constructor class B");
}
hello() {
console.log("B: Hello");
A.helloWithoutLoop();
}
}
export default new B();
看到区别了吗?