Expressjs ejs fn.apply错误'查看不是构造函数'

时间:2016-07-19 15:17:03

标签: javascript node.js express apply ejs

我正在尝试在调用原始app.get之前完成一些事情。

我找到了this页面,我尝试了他们所做的并且它大部分都有效,当我尝试使用它的渲染引擎时,我期待它。

我正在使用的代码(appexpress()的结果):

const express = require('express');
const app = express();
const ejs = require('ejs');
app.set('view engine', 'ejs');

var originalfoo = app.get;
app.get = function() {
    // Do stuff before calling function
    console.log(arguments);
    // Call the function as it would have been called normally:
    originalfoo.apply(this, arguments);
    // Run stuff after, here.
};

app.get('/home', function (req, res) {
    //res.send('hello world') // This works
    res.render('index'); // This crashes
});

res.render给了我这个错误:TypeError: View is not a constructor

有谁知道如何解决这个问题?

PS:/views/index.ejs确实存在

1 个答案:

答案 0 :(得分:2)

您只需要返回原始函数调用,否则装饰的app.get方法不再返回与原始函数不同的内容:

app.get = function() {
    // Call the function as it would have been called normally:
    return originalfoo.apply(this, arguments);
};