【问题标题】:errorMessage is not definederrorMessage 未定义
【发布时间】:2020-09-05 09:19:13
【问题描述】:

如何在部分路由中使用 errorMessage 对象。我试过了

路线:-

const express = require("express");
const router = express.Router();
const Character = require("../models/character");

// All Character
router.get("/", (req, res) => {
  res.render("characters/index");
});

// New Character
router.get("/new", (req, res) => {
  res.render("characters/new", { character: new Character() });
});

// Creat
router.post("/", (req, res) => {
  const character = new Character({
    name: req.body.name,
  });
  character.save((err, newCharacter) => {
    if (err) {
      res.render("characters/new", {
        character: character,
        errorMessage: "Error Creating",
      });
    } else {
      // res.redirect(`characters/${newCharacter.id}`)
      res.redirect("characters");
    }
  });
});

module.exports = router;

布局:-

<!DOCTYPE html>
<html lang="en">
 <head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Test</title>
</head>
 <body>
   <%- include("../views/partials/header.ejs") %> 
   <%- include("../views/partials/errorMessage.ejs") %>
 <br />
 <%- body %>
 <br />
 </body>
 </html>

部分:-

<%= errorMessage %>

它给了我这个错误:-

ReferenceError: D:\Web_Development\LGS\layouts\layout.ejs:10
8| 

9|   <body>

 >> 10|     <%- include("../views/partials/header.ejs") %> <%-

11|     include("../views/partials/errorMessage.ejs") %>

12|     <br />

13|     <%- body %>


 D:\Web_Development\LGS\views\partials\errorMessage.ejs:1
 >> 1| <%= errorMessage %>

 2| 

 errorMessage is not defined

【问题讨论】:

  • 部分假设所有 res.render() 调用都传递了一个 errorMessage 参数。

标签: javascript node.js express routes partial


【解决方案1】:

试试这个,它可能对我有用!!!!!!

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

您正在将数据从服务器传递到“characters/new.ejs”这个文件
现在在 new.ejs 文件中,您使用 语句
使用了诸如 header 和 errorMessage 之类的布局 并将数据从 new.ejs 文件传递​​到此布局,您需要向 语句和要传递的数据对象提供第二个参数

所以在你的例子中将 errorMessage 传递给 “../views/partials/errorMessage.ejs”你需要提供

<%- include("../views/partials/errorMessage.ejs", {errorMessage}) %>

然后你可以使用这个传递的数据到你的布局中,比如
如果你想传递不止一个数据,你可以这样做

<%- include("../views/partials/errorMessage.ejs", {data1, data2, ...}) %>

【讨论】:

    【解决方案3】:

    也许你应该尝试包含特定变量:

    <%- include("../views/partials/errorMessage.ejs", {errorMessage}) %>
    

    或者只是检查变量在主布局中的可用性...

    <% if (errorMessage !== undefined) { %>
          <%= errorMessage %>
    <% } %>
    

    【讨论】:

    • 感谢您的帮助。但我试过了,它给了我同样的错误。您能提出其他建议吗?
    • 是的,很愚蠢,但是,....如果定义了错误消息吗?你应该包装一个条件来检查你的变量是否被定义......我想是这个......
    猜你喜欢
    • 1970-01-01
    • 2021-03-03
    • 2019-12-18
    • 2017-08-19
    • 1970-01-01
    • 2020-10-10
    • 2013-06-17
    • 1970-01-01
    • 2013-01-29
    相关资源
    最近更新 更多