我是nodejs的新手。我正在使用express和ejs。几个小时前,我看到安装express-ejs-layouts可以在我的项目中使用布局,该布局可以正常工作,但是现在我在尝试改进代码时,突然停止了其良好的功能。
当我发现它运行不正常时,我决定回到工作阶段,这不是很多代码。
app.js
var express = require('express');
var expressLayouts = require('express-ejs-layouts');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var cors = require('cors');
var routes = require('./routes/index');
var app = express();
//
app.set('views', path.join(__dirname, '/views'));
app.set('view engine', 'ejs');
//
app.use(logger('dev'));
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, '/public')));
app.use(expressLayouts);
app.use('/', routes);
index.js:
//回到家
router.get('/', function(req, res, next) {
res.render('index', { user : req.cookies.UserData, token_id : req.cookies.token_id});
console.log(cookies);
});
// POST登录,这里我检查用户并创建令牌和用于测试的用户数据
router.post('/user/login',function(req,res,next){
////---here all code, it's a lot----///
res.cookie('token_id', token);
res.cookie('UserData', locals );
res.redirect('/')
});
//获取登录布局错误
router.get('/user/login', function(req, res, next) {
res.clearCookie('token_id');
res.clearCookie('UserData');
res.render('login',{layout : false});
});
当进入localhost:3000 / user / login时,出现错误“布局未定义”。但是,我事先使用了对我有用的布局变量。
从布局中删除<%variable%>时,“ / user / login”工作正常,并且不使用布局。
_Head.ejs示例变量
<title><%= user.title %></title>
然后创建cookie以查看其工作原理,结果发现在运行cookie和再次设置布局变量的情况下,他继续告诉我“未定义用户变量”,而这段代码不是修改后,我正在改进的是Toaster,这是我淘汰的Toaster
我总是使用nodemon。
答案 0 :(得分:0)
app.set('layout', 'layout.ejs');
在app.js中添加此行。
layout.ejs在您定义的情况下应位于views文件夹内
app.set('views', path.join(__dirname, '/views'));