在expressjs中轻松使用帮助程序类

时间:2015-09-21 00:18:45

标签: node.js express helper

我正在使用一个漂亮的准系统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如何工作)。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您的代码存在两个问题。

首先,您要将 helpers / newlib.js 中的NewLib函数分配给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");
  }
};