简体   繁体   English

node.js要求不全局加载对象

[英]nodejs require is not loading object globally

I have two files in helpers folder, one is EventHelper.js and UserEvent.js , 我在helpers文件夹中有两个文件,一个是EventHelper.jsUserEvent.js

helpers/EventHelper.js 助手/ EventHelper.js

function EventHelper() {
  this.onEventCreated = function(err, e) {...}
  this.isExisting = function(id) {...}
}
module.exports = new EventHelper();

helpers/UserEvent.js 助手/ 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();

controllers/EventController.js 控制器/ 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 and EventHelper2 in UserEvent.js are always empty(having {} ), where as EventHelper3 is being initialised properly and able to refer object's methods properly. UserEvent.js中的EventHelper1EventHelper2始终为空(具有{} ),其中EventHelper3已正确初始化,并且能够正确引用对象的方法。 I have referred this EventHelper.js in different controllers folder( EventController.js ) globally and it was getting populated properly. 我已经在不同的控制器文件夹( EventController.js )中全局引用了此EventHelper.js ,并且已正确填充它。 I am not sure if I am missing something here 我不确定我是否想念这里的东西

You're missing some semicolons: 您缺少一些分号:

function EventHelper() {
   this.onEventCreated = function(err, e) {...}
   this.isExisting = function(id) {...}
}**;**
module.exports = new EventHelper();

For instance after adding this one, I got the EventHelper within your Controller, which I haven't gotten before. 例如,添加此代码后,我在您的Controller中获得了EventHelper,这是我以前从未听说过的。

Furthermore (I guess it's just and typo here and not in your actual code, since then you couldn't get an instance for it), it's: 此外(我想这只是这里的错别字,而不是您的实际代码中的错字,因为那时您无法为其获取实例),它是:

EventHelper3.onEventCreated(err,e);

and not ` 而不是

EventHepler3.onEventCreated(err,e);

So to sum up, the following is now working for me: 综上所述,以下内容现在对我有用:

// EventHelper.js
function EventHelper() {
   this.onEventCreated = function(err, e) {
      console.log('testCreate');
   };
   this.isExisting = function(id) {
      console.log('testExists' + id);
      return true;
   };
};  
module.exports = new EventHelper();

// UserEvent.js
var EventHelper1 = require('./EventHelper.js');
var EventHelper2 = require('./EventHelper.js');


function UserEvent() {
   this.fireEvent = function(req, res) {
      console.log(req + res);
      var EventHelper3 = require('./EventHelper');
      EventHelper1.onEventCreated(req, res);
      EventHelper2.onEventCreated(req, res);
      EventHelper3.onEventCreated(req, res);
   };
};
module.exports = new UserEvent();

// EventController.js
var EventHelper = require('../helpers/EventHelper.js');
var UserEvent = require('../helpers/UserEvent.js');

var EventController = {
   fireEvent: function(req, res) {
      if(EventHelper.isExisting(1)) UserEvent.fireEvent(req, res);
   };
 }

 EventController.fireEvent("1","2");

Withe the following output: 具有以下输出:

testExists1
12
testCreate
testCreate
testCreate

I hope that I could help you! 希望能对您有所帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM