2017-03-09 43 views
9

我當試圖渲染.ejs文件,在這個特定的行的NodeJS - ESC不是一個函數

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服務器下運行的,我運行完全相同的nodeapp。

任何想法將不勝感激!

謝謝!

+0

嘗試運行'../ api_html/connection/connection_list.ejs'通過https://github.com/RyanZim/EJS-Lint。 (免責聲明:我寫了EJS-Lint) – RyanZim

+0

嘗試<% - include(「../ api_html/connection/connection_list.ejs」)%> –

回答

16

你的答案首先感謝。

我想出了這個問題。

錯誤出現在包含的EJS文件<%- include ('../api_html/connection/connection_list.ejs') %>中。

例如,如果您包含<% include ../partials/header %>,其中包含<%= user.email %>,那麼當用戶定義(用戶登錄)時它將工作得很好,但如果不是,則會拋出esc in not a function

0

我沒有評論的聲望,所以....我只是看到了同樣的症狀。在我來說,我不小心改變了「currentUser.name」到「currentUser.Name」(大寫的「N」)從書中「快車在行動」的樣本,第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」 的類型錯誤消失

+0

這與問題無關。這是一個不同的類型錯誤 – JohnSnow

2

由於@Dash回答了問題,它發生在.ejs模板中有未定義的變量時。有一個棘手的方法來找到這個變量,並且這樣做的方法是將模板代碼直接放在您的ejs文件中,現在當您運行您的應用程序時,您可以看到哪個變量處於未定義狀態。 例如,假設您有index.ejs,並在此文件中包含模板<%include partials/_pagination.ejs %>。現在,如果您遇到此錯誤,只需複製索引中_pagination文件中的代碼並將其移過代碼,然後運行您的應用程序以查找哪個變量未定義。

相關問題