Почему mypartial.e js не отображается? - PullRequest
0 голосов
/ 01 марта 2020

Я пытаюсь выучить node.js с помощью книги Джонатана Рекслера "Получить программирование с node.js". В главе 10 использование партиалов объясняется очень кратко, и я не заставляю его работать.

Я сделал nav.ejs в папке partials, которая выглядит следующим образом:

<ul>
  <li>One</li>
  <li>Two</li>
  <li>Three</li>
</ul>

Пример layout.ejs в книге выглядит так:

  <body>
    <header>Header</header>
    <nav>
      <% include partials/nav %>
    </nav>
    <%- body %>
    <footer>Footer</footer>
  </body>

Но это дает мне синтаксическую ошибку:

SyntaxError: Unexpected identifier in C:\node-projects\wandelverhalen\views\layout.ejs while compiling ejs

С помощью stackoverflow я изменился шаблон include в:

<% include ("partials/nav"); %>

Это решило ошибку, но не показывает nav при запуске. А на странице источника указан пустой тег <nav>.

Буду признателен за любую помощь.

Ради полноты, это мой индекс. js:

"use strict";

const port = 3000;
const express = require("express");
const app = express();
const homeController = require("./controllers/homeController");
const layouts = require("express-ejs-layouts");

app
  .set("view engine", "ejs")
  .use(
    express.urlencoded({
      extended: false
    })
  )
  .use(express.json())
  .use(layouts)
  .use((req, res, next) => {
    console.log(`Request made to ${req.url}`);
    next();
  })
  .get("/", homeController.sendReqParam)
  .get("/:myname", homeController.sendReqParam)
  .listen(port, () => {
    console.log(`Server is running on port ${port}`);
  });

1 Ответ

1 голос
/ 01 марта 2020

Вы хотите использовать <%- include ("partials/nav"); %> для рендеринга вашей части. <% предназначен только для сценариев и управления и не производит вывода, поэтому вы не видите ничего добавленного на страницу. Добавление - после <% приведет к выводу неэкранированного значения include ("partials/nav").

...