在 Express 中通过 res.locals 传递数据时遇到问题

Trouble passing data through res.locals in Express

我正在尝试将我的路线信息传递给每个视图。我需要在 index.ejs 中使用 req.path 变量。所以我尝试通过 res.locals 传递数据,但它不起作用。

我的app.js

app.use((req, res, next) => {
  res.locals.path = req.path;
  next();
});

router.get('/', async (req, res) => {
  res.render('classes/index');
});

index.ejs

<% if(!path=='/'){ %>
        <ul class="navbar-nav ml-auto">
          <li class="nav-item">
            <a href="#" class="nav-link">Log In</a>
          </li>
          <li class="nav-item">
            <a href="#" class="nav-link">Sign Up</a>
          </li>
        </ul>
<% } %>

有人看到我哪里搞砸了吗?

要设置 res.locals 的中间件应该在创建 router 实例之前出现:

const router = require('express').Router();

app.use((req, res, next) => {
  res.locals.path = req.path;
  next();
});

router.get('/', async (req, res) => {
  res.render('classes/index');
});

app.use(router);

你可以像这样传递数据:

router.get('/', async (req, res) => {
  res.render('classes/index', {path: req.path});
});