【问题标题】:NodeJs - esc is not a functionNodeJs - esc 不是一个函数
【发布时间】:2017-06-13 05:26:22
【问题描述】:

我在尝试在此特定行渲染 .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 服务器下触发的。

任何想法将不胜感激!

谢谢!

【问题讨论】:

  • 尝试运行 ../api_html/connection/connection_list.ejsgithub.com/RyanZim/EJS-Lint。 (免责声明:我写了 EJS-Lint)
  • 尝试

标签: node.js ejs


【解决方案1】:

首先感谢您的回答。

我发现了问题。

错误出现在包含的 EJS 文件&lt;%- include ('../api_html/connection/connection_list.ejs') %&gt;

例如,如果您包含包含&lt;%= user.email %&gt;&lt;% include ../partials/header %&gt;,则在定义用户(用户已登录)时它将完美运行,但在未定义时会抛出esc in not a function

【讨论】:

    【解决方案2】:

    @Dash 回答了这个问题,当您在 .ejs 模板中有一个未定义的变量时,就会发生这种情况。找到这个变量有一个棘手的方法,这样做的方法是将模板代码直接放在你的 ejs 文件中,现在当你运行你的应用程序时,你可以看到未定义的变量。 例如,假设您有 index.ejs,并且在此文件中包含了一个模板 &lt;%include partials/_pagination.ejs %&gt;。现在,如果您遇到此错误,只需将 _pagination 文件中的代码复制并粘贴到您的索引中,然后运行您的应用程序以查找未定义的变量。

    【讨论】:

      【解决方案3】:

      我没有评论的声誉所以....我只是看到了同样的症状。在我的例子中,我不小心将“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;
      }
      

      views/_header.ejs

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

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

      【讨论】:

      • 这与问题无关。那是一个不同的类型错误
      猜你喜欢
      • 2017-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-03
      • 2020-07-12
      相关资源
      最近更新 更多