2017-03-09 6 views
9

ich ein seltsamen Probleme bekam, als eine .ejs Datei auf diesen spezifischen LinienNodeJS - esc ist keine Funktion

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> 

Hier ist der Fehler

esc zu machen versucht, ein nicht Funktion

Ich verstehe wirklich nicht, woher dieser Fehler kommt. Ich verwende keine esc Funktion die ../api_html/connection/connection_list.ejs Datei, die enthalten ist.

Darüber hinaus habe ich dieses Problem nicht mein lokaler Server (unter Windows), dieser Fehler wird unter einem CentOs-Server ausgelöst, wo ich die genau nodeapp ausführen.

würden Irgendwelche Ideen sehr geschätzt!

Danke!

+0

Versuchen Sie '../ api_html/Verbindung/connection_list.ejs' durch https://github.com/RyanZim/EJS-Lint. (Disclaimer: Ich schrieb EJS-Lint) – RyanZim

+0

versuchen <% - include ("../ api_html/Verbindung/connection_list.ejs")%> –

Antwort

16

Erster dank für Ihre Antworten die Typeerror verschwand wieder auf "currentUser.name" geändert.

Ich habe das Problem herausgefunden.

Der Fehler war in der mitgelieferten EJS <%- include ('../api_html/connection/connection_list.ejs') %> Datei.

Zum Beispiel, wenn Sie <% include ../partials/header %>, die <%= user.email %> enthält, wird es perfekt funktionieren, wenn der Benutzer definiert ist (Benutzer ist angemeldet), aber wird esc in not a function werfen, wenn es nicht ist.

0

ich nicht so guten Ruf zu kommentieren haben .... Ich habe gerade gesehen das gleiche Symptom. In meinem Fall habe ich geändert "currentUser.name" versehentlich "currentUser.Name" (Großbuchstaben "N") aus einer Probe in dem Buch "Express in Aktion", Abschnitt 8.

in 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> 

wenn ich

+0

, die auf die Frage nicht relevant ist. Das ist ein anderer Typfehler – JohnSnow

2

Wie @Dash die Frage beantwortet, kommt es vor, wenn Sie eine nicht definierte Variable in der .ejs Vorlage haben. Es gibt einen kniffligen Weg, um diese Variable zu finden, und die Art, dies zu tun, besteht darin, den Vorlagencode direkt in Ihre EJS-Datei zu legen. Wenn Sie jetzt Ihre App ausführen, können Sie sehen, welche Variable in undefiniert ist. Angenommen, Sie haben index.ejs und in dieser Datei haben Sie eine Vorlage <%include partials/_pagination.ejs %> eingefügt. Wenn Sie nun auf diesen Fehler stoßen, kopieren Sie einfach den Code innerhalb der _pagination-Datei in Ihrem Index, und führen Sie Ihre App aus, um herauszufinden, welche Variable nicht definiert ist.

Verwandte Themen