即使呈现正确的EJS变量也会引发错误

时间:2017-11-20 06:12:27

标签: javascript node.js ejs

我有一个对象数组,我试图在ejs模板中迭代,但我不断得到“参考错误:账单未定义”。

其他StackOverflow问题据说测试变量是否实际定义,所以我用

<h1><%= bills.length %></h1>

这正确地渲染了数组的长度,但它仍然会在

处引发错误
ReferenceError: /index.ejs:11
    9|     <div id="billCarousel" class="carousel slide" data-ride="carousel">
    10|       <!--Indicators-->
 >> 11|       <h1><%= bills.length %></h1>

如果我用

替换这一行
<%= (typeof bills === 'undefined') ? "ERROR" : bills[0].TrackNum %>

然后正确渲染第一个对象的TrackNum,但错误移至

ReferenceError: index.ejs:13
    11|       <ol class="carousel-indicators">
    12|         <%= (typeof bills === 'undefined') ? "ERROR" : bills[0].TrackNum %>
 >> 13|         <% for (var i=0; i < bills.length; i++) {%>

您可以在下面看到所有相关代码。

页/ index.ejs

<ol class="carousel-indicators">
    <h1><%= (typeof bills == 'undefined') ? "ERROR" : bills[0].TrackNum %></h1>
    <% for (var i=0; i < bills.length; i++) {%>
      <li data-target="#billCarousel" data-slide-to="<%= i %>" class="<%= (i == 0) ? 'active':'' %>"></li>
    <% } %>
</ol>

server.js

app.get('/', function(request, response) {
    billQuery.summary(function(data) {
        console.log(data.bills);
        response.render('pages/index', {
            page: "index",
            status: data.status,
            message: data.message,
            bills: data.bills
        });
    })
});

console.log(data.bills)正确地将数组打印到控制台。我已尝试在index.ejs中呈现状态和消息,并且它们工作正常。我已经使用

将Express Engine设置为EJS
app.set('view engine', 'ejs');

在我有渲染index.ejs的路径之前。我也重新启动了我的服务器并多次清除了浏览器的缓存,但错误仍在继续。还有其他我想念的东西吗?

1 个答案:

答案 0 :(得分:0)

问题是因为网站试图加载图标时出现404错误。

app.get('*', function(request, response) {
    console.log("Couldn't retrieve "+request.url);
    response.render('pages/index', {
        page: "index",
        status: "Failed",
        message: "Error 404"
    });
});

当服务器试图加载favicon.ico时,它调用了这条路线,这似乎删除了我在&#34; /&#34;中传递的账单数组。路线。我把

<link rel="shortcut icon" href="#">

在index.ejs的头部作为临时修复。一旦我改变了这条路线以呈现404页面,问题就永久固定了。