Javascript ReferenceError:在NodeJS会话中未定义请求

Javascript ReferenceError:在NodeJS会话中未定义请求,javascript,node.js,session,express,login,Javascript,Node.js,Session,Express,Login,我是NodeJS的新手,我正在尝试与session合作。但是我被这个错误所困扰。感谢您的任何帮助 代码:- var express = require('express'); var jsonFile = require('jsonfile'); var NodeSession = require('node-session'); var router = express.Router(); session = new NodeSession({secret: 'Q3UBzdH9GEfiRCT

我是NodeJS的新手,我正在尝试与session合作。但是我被这个错误所困扰。感谢您的任何帮助

代码:-

var express = require('express');
var jsonFile = require('jsonfile');
var NodeSession = require('node-session');
var router = express.Router();

session = new NodeSession({secret: 'Q3UBzdH9GEfiRCTKbi5MTPyChpzXLsTD', 'lifetime': 60 * 1000, 'secure': true, 'encrypt': true});

session.startSession(request, response, function () {
    // server handler goes here
    // req.session available
});

function restrict(req, res, next) {
    if (req.session.has('sessnm')) {
        next();
    } else {
        res.redirect('/');
}
它显示了此行中的错误:-

session.startSession(request, response, function () {

据我所知,
startSession
应在请求和响应可用的上下文中使用,例如作为中间件:

app.use(function (req, res, next) {
    session.startSession(req, res, function() {
        // ...        
        next();
    });
})

其中
app
是您的服务器实例,例如
app=express()

我认为您的
startSession
函数应该放在一些路由处理程序中,这样它只在有请求时触发,而不是在应用程序启动时触发。@MohitBhardwaj-像这样吗??router.get('/',函数(req,res,next){session.startSession(函数(请求,响应){});res.render('index',{title:'Login Page'});});不,我的错-这确实是正确的api,但它是为了在任何时候都可以使用req/res-编辑回答我认为不必在每个路由中添加它,您可以在包含所有或多个路由的文件顶部添加它作为公共中间件。您可以使用
app.use
。@MohitBhardwaj-如果我将这些内容放在app.js中,那么如何分配会话名称和值。因为我在index.js路由文件中这么做。@YashParekh不,我没有说
app.js
,我说的是
app.use
。事实上,我的意思是说,将此函数放在
应用程序中。在
index.js
文件顶部使用
块,以便它适用于该文件中的所有路由。@YashParekh我认为您必须使用
路由器。使用
而不是
应用程序。在index.js文件中使用