尝试在此特定行渲染 .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不是函数
我真的不明白这个错误来自哪里。
我没有使用esc
函数包含的../api_html/connection/connection_list.ejs
文件。
除此之外,我没有遇到这个问题我的本地服务器(在Windows下),这个错误是在运行完全相同的nodeapp的CentOs服务器下触发的。
任何想法都会非常感激!
谢谢!
答案 0 :(得分:17)
首先感谢您的回答。
我想出了这个问题。
错误发生在所包含的EJS文件<%- include ('../api_html/connection/connection_list.ejs') %>
中。
例如,如果您包含<% include ../partials/header %>
包含<%= user.email %>
,则在定义用户(用户已登录)时它将完美运行,但在esc in not a function
时会抛出{{1}}。不是。
答案 1 :(得分:2)
当@Dash回答了这个问题,当你在.ejs模板中有一个未定义的变量时会发生这种情况。找到这个变量有一个棘手的方法,这样做的方法是将模板代码直接放在你的ejs文件中,现在当你运行你的应用程序时,你可以看到未定义的变量。
例如,假设您有index.ejs,并在此文件中包含模板<%include partials/_pagination.ejs %>
。现在,如果您遇到此错误,只需复制并浏览索引中_pagination文件中的代码,然后运行您的应用程序以查找未定义的变量。
答案 2 :(得分:0)
我没有评论的声誉....我只是看到了相同的症状。在我的情况下,我不小心将“currentUser.name”改为“currentUser.Name”(大写“N”),来自“Express In Action”一书中的一个样本,第8节。
在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消失了