nodejs require不是全局加载对象

nodejs require is not loading object globally

本文关键字:加载 对象 全局 require nodejs      更新时间:2023-09-26

我在助手文件夹中有两个文件,一个是EventHelper.jsUserEvent.js

帮助程序

/事件帮助程序.js

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

帮助程序/用户事件.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();

控制器/事件控制器.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)
        ...
      }
    }

UserEvent.js中的EventHelper1EventHelper2总是空的(有{}),其中EventHelper3被正确初始化并能够正确引用对象的方法。我已经在全球不同的控制器文件夹(EventController.js)中引用了这个EventHelper.js,并且它被正确填充。我不确定我是否在这里错过了什么

您缺少一些分号:

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

例如,添加这个后,我在您的控制器中获得了事件助手,这是我以前从未获得过的。

此外(我想这只是这里的错字,而不是在您的实际代码中,因为那时您无法获得它的实例),它是:

EventHelper3.onEventCreated(err,e);

而不是"

EventHepler3.onEventCreated(err,e);

所以总结一下,以下内容现在对我有用:

// 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");

使用以下输出:

testExists1
12
testCreate
testCreate
testCreate

希望能帮到你!