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;