如何使用util添加方法到模块express()?

时间:2016-03-17 12:13:05

标签: javascript node.js express

我正在尝试扩展快速模块,并添加到他的方法中。 为此,我使用util模块 我的代码:

var expressApplication = require('express');
var util = require('util');

function Application() {
    expressApplication.apply(this, arguments);
    this.handlers = {};
}
util.inherits(Application, expressApplication);

//add my method
Application.prototype.write = function(data) {
    console.log(data)
};

然后我称之为:

var app = new Application();

//check inheritance
console.log(app instanceof expressApplication); // true
console.log(Application.super_ === expressApplication); // true

//and check the work my method
console.log(app.write('test'));


console.log(app.use) /// ---> error!!!

但是当我想调用快递的方法时 - 我无法使用,console.log(app.use)有错误app.use is not a function

请告诉我有什么问题,在哪里寻找解决问题的方法?或者,相反,我试听表达koa,实践。

谢谢!

1 个答案:

答案 0 :(得分:0)

require('express')导出的函数只是一个factory function,它自己进行原型混合,因此没有一个对象可以继承。

您有几个选择:

  • 使用您自己的express.application子类
  • 复制Express的工厂函数
  • 直接修改原始express.application

第一个好处是您不会影响所有Express应用程序实例,这通常是您想要的。写入第三方模块的原型(甚至是内置对象的原型)通常不赞成并且可能导致问题(特别是如果最终用户使用相同的名称附加他们自己的属性)。