分为package.json、user.json和server.js三个文件,user.json里面用户名为tobi,密码为ferret。
运行时powershell出现如下错误信息:
util.js:965
throw new TypeError('The super constructor to "inherits" must not ' +
^
TypeError: The super constructor to "inherits" must not be null or undefined
at Object.exports.inherits (util.js:965:11)
at module.exports (E:\code\test\node_modules\connect-redis\lib\connect-redis.js:130:8)
at Object. (E:\code\test\server.js:3:40)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.runMain (module.js:604:10)
at run (bootstrap_node.js:394:7)
server.js代码如下:
var connect=require('connect'),users=require('./users');
var RedisStore=require('connect-redis')(connect);
var server=connect(
connect.logger('dev'),
connect.bodyParser(),
connect.cookieParser(),
connect.session({store: new RedisStore, secret:'my app secret'}),
function(req,res,next){
if('/'==req.url&&req.session.logged_in){
res.writeHead(200,{'Content-Type':'text/html'});
res.end(
'Wdlcome back, '+req.session.name+'.'+'Logout'
);
}else{
next();
}
},function(req,res,next){
if('/'==req.url&&'GET'==req.method){
res.writeHead(200,{'Content-Type':'text/html'});
res.end([
''
].join(''));
}else{
next();
}
},function(req,res,next){
if('/login'==req.url&&'POST'==req.method){
res.writeHead(200);
if(!users[req.body.user]||req.body.password!=users[req.body.user].password){
res.end('Bad username/password');
}else{
req.session.logged_in=true;
req.session.name=users[req.body.user].name;
res.end('Authenticated!');
}
}else{
next();
}
},function(req,res,next){
if('/logout'==req.url){
req.session.logged_in=false;
res.writeHead(200);
res.end('Logged out!');
}else{
next();
}
}
);
server.listen(3000);
如果不使用connect-redis模块持久化session,代码是可以正常运行的,所以问题出在哪里呢,是node版本太新的缘故吗?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
是什么问题,我不太清楚,不过我在 connect-redis 的文档中找到下面的示例代码……所以,你确定可以用 connect 作为参数,而不是 session?