【发布时间】:2014-09-02 19:59:44
【问题描述】:
我的 app.js 看起来像这样:
var expressJwt = require('express-jwt');
var session = require('redis-sessions');
app.use('/events', expressJwt({secret: secret}), session.verifyToken, events);
session.verifyToken 是 redis db 的自定义模式,用于检查令牌是否已过期。
我为我的模块工作编写的所有测试,所以当我从 mocha 测试它时 session.verifyToken 工作。
//verifyToke function
RedisSessions.prototype.verifyToken = function(req, res, next){
var token = this.extractToken( req.headers['authorization'] );
this.containsToken(token, function(err, contains){
if(contains == 1){
next();
}else{
res.send(401);
}
});
}
最后我像这样导出我的 RedisSession 模块:
module.exports = new RedisSessions();
但是,当请求通过快递进来时,我在这一行收到 500 内部错误。
var token = this.extractToken( req.headers['authorization'] );
问题是,this 关键字的作用域完全关闭了,作用域内应该只有我的 RedisSessions 对象,而是孔表达框架。
谁能解释一下为什么 this 关键字关闭了?
【问题讨论】:
标签: node.js express node-modules