我如何monkeypatch Express查看查找?

时间:2012-04-11 20:01:31

标签: javascript node.js express

我正在尝试覆盖Express视图查找功能,但无法设法执行此操作。目标是能够在多个目录中查找模板。

我要做的是,bootstrap.js

function bootstrap(express) {
    var originalLookup = express.View.prototype.lookup;
    express.View.prototype.lookup = function(path) {
        console.log('Requested for', path);
        return originalLookup(path);
    };
};

module.exports = bootstrap;

我的app.js代码是:

var express = require('express'),
    routes = require('./routes'),
    bootstrap = require('./bootstrap'),
    app = module.exports = express.createServer();


// Configuration
require('./config/environment.js')(app, express);

// Bootstrap
bootstrap(express);

// Routes
require('./config/routes.js')(app);

// Start
app.listen(3000);

在我的bootstrap.js代码中,express.View.prototype.lookup未定义。我不明白为什么。我做错了什么?

我刚开始使用node.js和“高级”Javascript。而且我不得不承认我有点迷失在这里。

感谢。

1 个答案:

答案 0 :(得分:1)

在当前版本(2.5.9)中,它不是View.prototype.lookup,它只是View.lookup。

~: ) node
> require('express').View
{ [Function: View]
  register: [Function],
  compile: [Function],
  lookup: [Function] }
> require('express').View.lookup
[Function]