Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用next()时接收404错误;使用Express 4.0_Javascript_Node.js_Express - Fatal编程技术网

Javascript 使用next()时接收404错误;使用Express 4.0

Javascript 使用next()时接收404错误;使用Express 4.0,javascript,node.js,express,Javascript,Node.js,Express,我当前正试图通过以下方法为我的页面上的某些路由添加身份验证检查器: node\u模块/authCheck.js var mongo = require('mongo'); var db = require('mongojs').connect(mongo.info().address, ['users']); module.exports = { 'isLoggedIn': function(req, res, next) { function loggedIn(

我当前正试图通过以下方法为我的页面上的某些路由添加身份验证检查器:

node\u模块/authCheck.js

var mongo   = require('mongo');
var db      = require('mongojs').connect(mongo.info().address, ['users']);

module.exports = {
   'isLoggedIn': function(req, res, next) {
     function loggedIn(state) {
       res.locals.isLoggedIn = state;
       res.locals.isAdmin    = state;
     }

     if(req.cookies.rememberToken) {
       db.users.find({ 'rememberToken': req.cookies.rememberToken }, function(err, userFound) {
          if (err) {
             loggedIn(false);
             res.redirect('/');
          } else if (userFound.length === 0) {
             loggedIn(false);
             res.redirect('/');
          } else {
            console.log('Found You');
            loggedIn(true);
----->      next();   --- This line causing error at 404
          }

       });
     } else {
        loggedIn(false);
        next();
     }
  }
};
var express = require('express');
var router  = express.Router();

/* GET Tech Page */
router.get('/', function(req, res) {
  res.render('tech', { title: 'Tech' });
});

module.exports = router;
我的
app.js
有以下功能:

var authCheck    = require('authCheck');
var isLoggedIn   = function(req, res, next) {
  authCheck.isLoggedIn(req, res, next);
}

app.use('/tech', isLoggedIn, tech);
tech.js

var mongo   = require('mongo');
var db      = require('mongojs').connect(mongo.info().address, ['users']);

module.exports = {
   'isLoggedIn': function(req, res, next) {
     function loggedIn(state) {
       res.locals.isLoggedIn = state;
       res.locals.isAdmin    = state;
     }

     if(req.cookies.rememberToken) {
       db.users.find({ 'rememberToken': req.cookies.rememberToken }, function(err, userFound) {
          if (err) {
             loggedIn(false);
             res.redirect('/');
          } else if (userFound.length === 0) {
             loggedIn(false);
             res.redirect('/');
          } else {
            console.log('Found You');
            loggedIn(true);
----->      next();   --- This line causing error at 404
          }

       });
     } else {
        loggedIn(false);
        next();
     }
  }
};
var express = require('express');
var router  = express.Router();

/* GET Tech Page */
router.get('/', function(req, res) {
  res.render('tech', { title: 'Tech' });
});

module.exports = router;
它工作得很好,唯一的问题是,当authCheck通过并验证用户实际上就是他们所说的用户并登录时,它会尝试将我重定向到从
next()请求的页面
在这种情况下,
/tech

但是页面是404,如果我从
应用程序中删除
isLoggedIn
检查。使用
,我在尝试导航到该页面时不会得到404。关于这是什么原因的建议

我收到的错误是:

Error: Not Found
    at Layer.app.use.res.render.message [as handle] (/Users/GacntMac/Documents/Node/SitkaRefrigeration/app.js:48:15)
    at trim_prefix (/Users/GacntMac/Documents/Node/SitkaRefrigeration/node_modules/express/lib/router/index.js:240:15)
    at /Users/GacntMac/Documents/Node/SitkaRefrigeration/node_modules/express/lib/router/index.js:208:9
    at Function.proto.process_params (/Users/GacntMac/Documents/Node/SitkaRefrigeration/node_modules/express/lib/router/index.js:269:12)
    at next (/Users/GacntMac/Documents/Node/SitkaRefrigeration/node_modules/express/lib/router/index.js:199:19)
    at next (/Users/GacntMac/Documents/Node/SitkaRefrigeration/node_modules/express/lib/router/index.js:176:38)
    at next (/Users/GacntMac/Documents/Node/SitkaRefrigeration/node_modules/express/lib/router/index.js:176:38)
    at next (/Users/GacntMac/Documents/Node/SitkaRefrigeration/node_modules/express/lib/router/index.js:176:38)
    at next (/Users/GacntMac/Documents/Node/SitkaRefrigeration/node_modules/express/lib/router/index.js:176:38)
    at /Users/GacntMac/Documents/Node/SitkaRefrigeration/node_modules/authCheck.js:22:13

指向
next()
authCheck.js

中没有发现任何错误,那么
tech
方法是什么样子的?@BarşUşUşaklı为您添加的。如果您像这样更新
tech.js
路由器.get('/tech',function(req,res){res render('tech',{title:'tech})}),它还会出错吗
你能试着把
技术
变成一个中间件例程吗
module.exports=函数techfn(req,res,next){res.render('tech',{title:'tech'});}
var mongo   = require('mongo');
var db      = require('mongojs').connect(mongo.info().address, ['users']);

module.exports = {
   'isLoggedIn': function(req, res, next) {
     function loggedIn(state) {
       res.locals.isLoggedIn = state;
       res.locals.isAdmin    = state;
     }

     if(req.cookies.rememberToken) {
       db.users.find({ 'rememberToken': req.cookies.rememberToken }, function(err, userFound) {
          if (err) {
             loggedIn(false);
             res.redirect('/');
          } else if (userFound.length === 0) {
             loggedIn(false);
             res.redirect('/');
          } else {
            console.log('Found You');
            loggedIn(true);
----->      next();   --- This line causing error at 404
          }

       });
     } else {
        loggedIn(false);
        next();
     }
  }
};
var express = require('express');
var router  = express.Router();

/* GET Tech Page */
router.get('/', function(req, res) {
  res.render('tech', { title: 'Tech' });
});

module.exports = router;