节点js的奇怪错误:TypeError X不是构造函数

时间:2020-08-04 01:11:17

标签: javascript node.js constructor typeerror node-modules

有人知道为什么会这样吗?

我有一个非常复杂的系统,为简化起见,我们有以下代码:

profile_manager.js

const Profile = require('./profile');

class ProfileManager {
  doThing() {
    const prf = new Profile("Lemon", "ade");
  }
}
const prfManager = new ProfileManager();
module.exports = prfManager;

profile.js

class Profile {
  constructor(arg0, arg1) {
    //do thing
  }
}

module.exports = Profile;

index.js

const prfManager = require('./profile_manager');
prfManager.doThing();

一旦调用.doThing(),我将收到一个TypeError消息,指出“配置文件不是构造函数”。

但是...当我将profile_manager.js更改为下面的以下代码时,它可以正常工作。没有TypeError。

class ProfileManager {
  doThing() {
    const Profile = require('./profile');
    const prf = new Profile("Lemon", "ade");
  }
}
const prfManager = new ProfileManager();
module.exports = prfManager;

我什至console.logged prf对象,它以我想要的方式工作。为什么仅当我移动“ const Profile = require('./ profile');”时才起作用在方法中,但是当我将其放在模块顶部时,它并不想工作。

1 个答案:

答案 0 :(得分:0)

我发现profile.js有一个profile_manager.js实例或类似的东西

此帖子详细介绍了How to deal with cyclic dependencies in Node.js