TypeError:无法调用方法' checkId'未定义因为null原型

时间:2014-11-27 15:04:50

标签: javascript node.js

我在一个Cannot call method 'checkId' of undefined模块中遇到node.js,但在调用时遇到另一个模块:

res = EntityCommons.prototype.checkId(res,json[RE_FIELD_ID]);

我在同一目录中有3个node.js模块HostRequestEntityCommonsHostRequest需要EntityCommons如下:

Request

var EntityCommons = require("./EntityCommons.js");

console.log("XXEntityCommons null or undefined : " +
    _.isNullOrUndefined(EntityCommons));
console.log("XXEntityCommons prototype null/und: " +
    _.isNullOrUndefined(EntityCommons.prototype));

Host

var EntityCommons = require("./EntityCommons.js");

console.log("EntityCommons null or undefined : " +
    _.isNullOrUndefined(EntityCommons));
console.log("EntityCommons prototype null/und: " +
    _.isNullOrUndefined(EntityCommons.prototype));

当我检查输出时,我得到:

EntityCommons null or undefined : false
EntityCommons prototype null/und: true
XXEntityCommons null or undefined : false
XXEntityCommons prototype null/und: false

Host中,EntityCommons的原型为null。这根本不符合逻辑。什么可能导致这个问题?

更新

EntityCommons也需要Host,如下所示:

var Host = require("./Host.js");

这是一个循环问题吗?

1 个答案:

答案 0 :(得分:0)

我使用可用的推荐here解决了循环问题。

换句话说,我首先在我的模块顶部导出一个函数:

function EntityCommons() { }

module.exports = EntityCommons;

它也适用于对象:

var EntityCommons = {};

module.exports = EntityCommons;