我目前正在建立一个非常简单的网站。它具有以下结构:
/
-routes
- index.js
- login.js
- logout.js
-views
- index.jade
- login.jade
该网站使用最新版本的node.js,使用玉石模板引擎并表达,如果这也有帮助。
基本上我有它,当你点击索引时,你会看到登录选项,它将处理登录模板,并检查你的凭据。使用注销,我希望它只是转到.js文件,核对我拥有的会话,并重新路由到索引视图。然而,我似乎无法正确地完成路由,它的行为就像它期待一个视图,但由于没有,我认为这就是它失败的原因。有没有办法说“没有视图,jsut处理js文件?”
编辑:app.js文件内容
var express = require('express');
var path = require('path');
var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var http = require('http');
var indexRoute = require('./routes/index');
var loginRoute = require('./routes/login');
var logoutRoute = require('./routes/logout');
var app = express();
var db = require("mongojs").connect("localhost:27017/acl", ["comments"]);
app.use(function(req,res,next){
req.db = db;
next();
});
// view engine setup
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));
app.get('*', function(req, res, next) {
res.locals.user = req.user || null;
next();
});
app.use('/', indexRoute);
app.post('/loginForm', loginRoute);
app.use('/login', loginRoute);
app.use('/logout', logoutRoute);
logout.js
var express = require('express);
var router = express.Router();
router.get('/logout', function (req, res) {
if (req.session === undefined) {
res.location("index");
res.redirect("/");
} else {
if (res.session.role == "guest") {
res.location("index");
res.redirect("/");
} else {
req.session = null;
res.render('home', {title: "express" });
}
}
}
module.exports = router;
答案 0 :(得分:1)
您的错误似乎在这里:
...
} else {
req.session = null;
res.render('home', {title: "express" });
}
...
我相信你只想做与if语句的其他部分完全相同的事情 - 重定向到索引。
另一方面,
res.location("index");
res.redirect("/");
可以并且很可能应该更改为
res.redirect("/")
在logout.js
的第一行似乎还有拼写错误 - 您错过了require('express')