EJSvariables即使正确渲染也会引发错误

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

其他StackOverflow问题说,以testingvariables是否实际定义,所以我用

<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> 

如果我replace这一行

 <%= (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之前。 我也重新启动了我的服务器,并清除了我的浏览器的caching几次,但错误不断发生。 还有什么我失踪?

这个问题是因为网站试图加载图标时导致的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时,它调用了这个路由,这似乎删除了我在“/”路由中传递的话单数组。 我放

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

在index.ejs的头部作为临时修复。 一旦我改变了这个路线来呈现一个404页面,这个问题就被永久解决了。