NodeJs – esc不是一个函数

试图在这个特定的行上渲染.ejs文件时,我遇到了一个奇怪的问题

TypeError: /home/me/nodeapp/app/views/default/page/connection.ejs:66 64| <div class="col s12 l8"> 65| <ul class="collapsible popout" data-collapsible="accordion""> >> 66| <%- include ../api_html/connection/connection_list.ejs %> 67| </ul> 68| </div> 

这是错误

esc不是一个函数

我真的不明白这个错误是从哪里来的。 我没有使用包含的../api_html/connection/connection_list.ejs文件的esc函数。

除此之外,我没有这个问题我的本地服务器(在Windows下),这个错误被激发在一个CentOs服务器,我运行完全相同的节点应用程序。

任何想法将非常感激!

谢谢!

首先感谢您的答复。

我想出了这个问题。

错误出现在包含的EJS文件<%- include ('../api_html/connection/connection_list.ejs') %>

例如,如果包含<%= user.email %> <% include ../partials/header %> <%= user.email %> ,那么当用户定义(用户login)时,它将完美工作,但会抛出esc in not a function时,它不是。

由于@Dash回答了这个问题,当您在.ejs模板中有一个未定义的variables时,就会发生这种情况。 有一个棘手的方法来find这个variables和方法是把模板代码直接放在你的ejs文件中,现在当你运行你的应用程序,你可以看到哪个variables在undefined。 例如,假设您有index.ejs,并在此文件中包含模板<%include partials/_pagination.ejs %> 。 现在,如果遇到此错误,只需复制索引中的_pagination文件中的代码,并运行应用程序以查找哪个variables未定义。

我没有评论的声誉,所以….我只是看到了同样的症状。 在我的例子中,我不小心把“currentUser.name”改成了“ExpressUser.Name”(大写字母“N”)。

在routes.js中

 var passport = require( "passport" ); router.use( function( req, res, next ) { res.locals.currentUser = req.user; } 

意见/ _header.ejs

 <a href="/edit"> Hello <%= currentUser.Name() %> </a> 

当我改回“currentUser.name”TypeError消失