【发布时间】:2020-10-23 12:42:10
【问题描述】:
我在/login 路由器中设置局部变量,就像这段代码一样
res.locals.username = data[0].username; 我使用console.log 输出data[0].username 和res.locals.username,它显示了用户名。
exports.login = function (req,res,next) {
var username = req.param("username");
var password = req.param("password");
con.query("select * from user where username = '"+username+"' and password = '"+password+"'",function (err,data) {
if(err) {
throw err;
}else {
if (data.length > 0) {
if (data[0].username === username && data[0].password === password) {
console.log(data);
req.session.userID = data[0].id;
req.session.username = data[0].username;
res.locals.username = data[0].username;
res.redirect("/home");
next();
}
}
});
};
exports.home = function (req,res,next){
if(req.session.userID && req.session.username) {
res.render('home');
}
}
但是当我尝试在我的 ejs 中显示“用户名”局部变量时,它显示用户名未定义。这是ejs文件
<html>
<head>
<title></title>
</head>
<body>
<%= username %>
</body>
</html>
它也返回错误
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:482:11)
at ServerResponse.header (C:\xamppp\htdocs\belajarnode\latihancrudajax2\node_modules\express\lib\response.js:767:10)
at ServerResponse.send (C:\xamppp\htdocs\belajarnode\latihancrudajax2\node_modules\express\lib\response.js:170:12)
at done (C:\xamppp\htdocs\belajarnode\latihancrudajax2\node_modules\express\lib\response.js:1004:10)
at tryHandleCache (C:\xamppp\htdocs\belajarnode\latihancrudajax2\node_modules\ejs\lib\ejs.js:257:5)
at View.exports.renderFile [as engine] (C:\xamppp\htdocs\belajarnode\latihancrudajax2\node_modules\ejs\lib\ejs.js:480:10)
at View.render (C:\xamppp\htdocs\belajarnode\latihancrudajax2\node_modules\express\lib\view.js:135:8)
at tryRender (C:\xamppp\htdocs\belajarnode\latihancrudajax2\node_modules\express\lib\application.js:640:10)
at Function.render (C:\xamppp\htdocs\belajarnode\latihancrudajax2\node_modules\express\lib\application.js:592:3)
at ServerResponse.render (C:\xamppp\htdocs\belajarnode\latihancrudajax2\node_modules\express\lib\response.js:1008:7)
GET /home 500 10.334 ms - 1627
这是我的 app.js 文件
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var session = require('express-session');
var app = express();
var user = function (req,res,next){
req.date = Date.now();
next();
};
app.use(user);
app.use(session({
secret: 'secret'
}));
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
这是我的路线文件
var express = require('express');
var router = express.Router();
var controllerdata2 = require('../controller/munculindata');
//---------------
var con = require('../koneksi').con;
function munculindata(res) {
con.query("select * from lat2", function (err, result) {
if (err) {
throw err;
} else {
res.render("index", {
data: result
});
}
});
}
/* GET home page. */
router.post('/login',controllerdata2.login);
router.get('/', controllerdata2.list_data);
router.get('/register',controllerdata2.register);
router.get('/home',controllerdata2.home);
router.get('/logout',function (req,res,next) {
});
router.get('/delete/:id',function (req,res,next) {
var id = req.params.id;
con.query("delete from lat2 where id = "+id,function (err) {
if(err)
throw err;
else
munculindata(res)
});
});
module.exports = router;
【问题讨论】:
-
您可以发布您的
routes/index文件吗? -
@dimitristseggenes 完成
标签: node.js express ejs node-modules