2017-03-09 24 views
9

Mam dziwne problemy, gdy próbuje zdać .ejs plik w tej specyficznej liniiNodeJs - esc nie jest funkcją

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> 

Tutaj jest błąd

esc nie jest funkcja

Naprawdę nie rozumiem skąd ten błąd pochodzi. Nie używam funkcji esc w dołączonym pliku ../api_html/connection/connection_list.ejs.

Oprócz tego, nie mam tego problemu mój lokalny serwer (pod Windows), ten błąd jest uruchamiany na serwerze CentOs, gdzie uruchamiam dokładnie ten sam nodeapp.

Wszelkie pomysły byłyby bardzo cenne!

Dzięki!

+0

Spróbuj uruchomić '../ api_html/connection/connection_list.ejs' thru https://github.com/RyanZim/EJS-Lint. (Zrzeczenie się: Napisałem EJS-Lint) – RyanZim

+0

try <% - include ("../ api_html/connection/connection_list.ejs")%> –

Odpowiedz

16

pierwsze dzięki za odpowiedzi.

Rozgryzłem problem.

Błąd był w załączonym pliku EJS <%- include ('../api_html/connection/connection_list.ejs') %>.

Na przykład, jeśli podłączysz <% include ../partials/header %>, który zawiera <%= user.email %>, będzie on działał idealnie, gdy użytkownik jest zdefiniowany (użytkownik jest zalogowany), ale w takim przypadku wyświetli esc in not a function.

0

Nie mam reputacji do komentowania, więc ... Właśnie zobaczyłem ten sam symptom. W moim przypadku przypadkowo zmienił „currentUser.name” w rozdziale „currentUser.Name” (wielka litera „N”) z próbki w książce „Expressu w działaniu”, 8.

w routes.js

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

odsłon/_header.ejs

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

kiedy zmieniłem z powrotem na "currentUser.name" The TypeError zniknął

+0

To nie ma znaczenia dla pytania. To jest inny błąd typu – JohnSnow

2

Ponieważ @Dash odpowiedział na pytanie, dzieje się, gdy masz niezdefiniowaną zmienną w szablonie .ejs. Istnieje trudny sposób na znalezienie tej zmiennej, a sposobem na to jest umieszczenie kodu szablonu bezpośrednio w pliku ejs, a teraz po uruchomieniu aplikacji można zobaczyć, która zmienna jest niezdefiniowana. Załóżmy na przykład, że masz plik index.ejs iw tym pliku zawierasz szablon <%include partials/_pagination.ejs %>. Jeśli napotkasz ten błąd, po prostu skopiuj i wklej kod w pliku _pagination w indeksie i uruchom aplikację, aby znaleźć zmienną, która nie jest zdefiniowana.