【发布时间】:2014-12-30 03:34:09
【问题描述】:
helpers 文件夹中有两个文件,一个是EventHelper.js 和UserEvent.js,
helpers/EventHelper.js
function EventHelper() {
this.onEventCreated = function(err, e) {...}
this.isExisting = function(id) {...}
}
module.exports = new EventHelper();
helpers/UserEvent.js
var EventHelper1 = require('./EventHelper')
var EventHelper2 = require('./EventHelper.js')
function UserEvent() {
this.fireEvent = function(req, res) {
var EventHelper3 = require('./EventHelper');
...
EventHelper1.onEventCreated(err, e);
EventHelper2.onEventCreated(err, e);
EventHepler3.onEventCreated(err, e);
}
};
module.exports = new UserEvent();
控制器/EventController.js
var EventHelper = require('../helpers/EventHelper')
var UserEvent = require('../helpers/UserEvent');
var EventController = {
fireEvent: function(req, res) {
if(EventHelper.isExisting(req.params.id)) UserEvent.fireEvent(req, res)
...
}
}
EventHelper1 和UserEvent.js 中的EventHelper2 始终为空(具有{}),其中EventHelper3 正在正确初始化并且能够正确引用对象的方法。我已经在全球不同的控制器文件夹(EventController.js)中引用了这个EventHelper.js,并且它被正确填充。我不确定我是否在这里遗漏了什么
【问题讨论】:
-
这是你的全部代码吗?如果
EventHelper.js在某处需要UserEvent.js,这就是我希望看到的。 -
你使用的是
console.log(EventHelper1),当你看到{}时?如果是这样,我知道问题所在:) -
我希望你知道你总是得到你的 EventHelper 的 同一个实例。模块只执行一次。
-
@m59,是的,我正在检查
EventHelper1和EventHelper2和console.log(EventHelper1),结果是{},当然如果我参考EventHelper.onEventCreated(),我收到错误Cannot call method 'onEventCreated' of undefined -
嗯,这个问题对我来说并不是很明显。我在想问题是您正在记录一个对象,该对象的原型上具有属性,这些属性不会显示在日志中,但实际上可以正常工作。
标签: javascript node.js require