【问题标题】:Why is my Embedded Javascript (EJS) not displaying my error.status value?为什么我的嵌入式 Javascript (EJS) 不显示我的 error.status 值?
【发布时间】:2020-12-04 05:06:14
【问题描述】:

我正在使用 ejs、node.js 和 express 以及其他包

为什么页面渲染时没有显示error.status和error.stack值?我确定这与 ejs 文件中未定义或不可访问的错误变量有关,但我不确定如何声明它或将其导入以使其可访问。 Rendered 404 page with no error.status or error.stack displaying

这是我的 error.ejs 文件

<%- include partials/header.ejs %>

<h1>404 Page Not Found</h1>

<h2><%= error.status %></h2>
<pre><%= error.stack %></pre>

<%- include partials/footer.ejs %>

这是我的 header.ejs 文件

<!DOCTYPE html>
<html lang="en">
<head>
    <title> Quartile </title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" />
    <link rel="stylesheet"  href="/stylesheets/style.css" />
    <script src="https://kit.fontawesome.com/66fd6114b0.js" crossorigin="anonymous"></script>
</head>
<body>

【问题讨论】:

    标签: javascript html node.js express ejs


    【解决方案1】:

    您是否通过渲染传递了错误?类似的东西

    res.render("error", { title: "Error", error: error.array() })
    

    【讨论】:

    • 谢谢,我在看到您的回复之前就知道了,但我仍然对错误最初是如何产生的感到有些困惑?我在下面对此进行了回复,对此进行了更多描述,谢谢!
    【解决方案2】:

    我能够弄清楚如何传递我定义为占位符的值,当您 res.render 错误文件时,需要在 app.js 文件中传递该变量。

    app.use(function(err, req, res, next) {
      err.status = 404;
      // render the error page
      res.status(err.status || 500);
      res.render('error',{errorStatus: err.status}); // 
    });
    

    我仍然不太了解 err.status 值是如何确定或填充的,如果我不对其进行硬编码,如果它实际上是在其他地方发生真正错误时创建的,那么它目前没有价值吗因为我没有实际错误?还是我总是必须自己定义它?似乎必须有一种方法可以自动生成错误值,我可以让它显示一个不断变化的变量,但我不明白该怎么做。

    【讨论】:

      猜你喜欢
      • 2014-06-29
      • 1970-01-01
      • 1970-01-01
      • 2015-07-26
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 2016-07-29
      • 1970-01-01
      相关资源
      最近更新 更多