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