Nodejs Express 渲染布局:false,但它仍然有效

Nodejs Express render layout : false , but it still holds

我是 nodejs 新手。我正在使用 express 和 ejs。几个小时前,我看到安装express-ejs-layouts可以在我的项目中使用layout,效果很好,但是现在我正在努力改进我的代码,它突然停止了它的良好功能。

当我看到它运行不佳时,我决定回到工作阶段,代码不多。

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('/')
});

//获取登录布局 false

router.get('/user/login', function(req, res, next) {
      res.clearCookie('token_id');
      res.clearCookie('UserData');
      res.render('login',{layout : false});
    });

当转到 localhost:3000/user/login 时,出现错误 "layout not defined"。但是,我事先使用了对我有用的布局变量。

从布局中删除 <% variable%> 时,“/user/login”没有问题并且不使用布局。

_Head.ejs样本变量

<title><%= user.title %></title>

然后创建 cookie 以查看它是如何工作的,事实证明,使用 cookie 运行 并再次设置布局变量,他继续告诉我 "the user variable is not defined",这段代码是不是我修改的那个,我改进的是一个烤面包机,就是我淘汰的那个

我一直用nodemon。

app.set('layout', 'layout.ejs');

在 app.js 中添加此行。

layout.ejs 应该在您的案例中的 views 文件夹内,正如您定义的那样

app.set('views', path.join(__dirname, '/views'));