我正在使用一个相当准系统的expressjs应用程序,并且想要添加一个库/帮助程序来存储一些有用的代码。理想情况下,我希望它作为模块来工作。但是,我无法使其正常工作。这是我得到的:

// helpers/newlib.js
var NewLib = function() {
  function testing() {
    console.log("test");
  }
};

exports.NewLib = NewLib;




// controllers/control.js
var newlib  = require('../helpers/newlib').NewLib;
var helper = new NewLib();
helper.testing();




我得到的错误是ReferenceError: NewLib is not defined。我遵循了我下载的另一个简单模块的设计模式(exports的工作方式)。

我究竟做错了什么?

最佳答案

您的代码有两个问题。

首先,您要将NewLib函数从helpers / newlib.js分配给newlib var,因此应使用new newlib()而不是new NewLib()

// controllers/control.js
var newlib  = require('../helpers/newlib').NewLib;
var helper = new newlib(); // <--- newlib, not NewLib
helper.testing();


或者,您可以将变量重命名为NewLib

// controllers/control.js
var NewLib  = require('../helpers/newlib').NewLib;
var helper = new NewLib(); // <--- now it works
helper.testing();


其次,在构造函数范围之外无法访问testing函数。您可以通过将其分配给this.testing例如来使其可访问:

// helpers/newlib.js
var NewLib = function() {
  this.testing = function testing() {
    console.log("test");
  }
};

关于node.js - 在ExpressJS中轻松使用帮助器类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32685673/

10-12 12:33