web-dev-qa-db-fra.com

NodeJs - esc n'est pas une fonction

J'ai eu des problèmes étranges lorsque j'essayais de rendre un fichier .ejs à cette ligne spécifique

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>

Voici l'erreur 

esc n'est pas une fonction

Je ne comprends vraiment pas d'où cette erreur provient .. .. Je n'utilise pas de fonction esc dans le fichier ../api_html/connection/connection_list.ejs qui est inclus.

En plus de cela, je n'ai pas ce problème sur mon serveur local (sous Windows), cette erreur est déclenchée sous un serveur CentOs sur lequel je lance exactement le même nodeapp.

Toutes les idées seraient très appréciées!

Merci!

9
Dash

Merci d'abord pour vos réponses.

J'ai compris le problème.

L'erreur était dans la fonction __ file<%- include ('../api_html/connection/connection_list.ejs') %> du fichier EJS inclus.

Par exemple, si vous incluez <% include ../partials/header %> qui contient <%= user.email %>, cela fonctionnera parfaitement lorsque l'utilisateur est défini (l'utilisateur est connecté), mais jettera esc in not a function s'il ne l'est pas.

17
Dash

Lorsque @Dash a répondu à la question, cela se produit lorsque vous avez une variable non définie dans le modèle .ejs. Il existe un moyen astucieux de trouver cette variable, qui consiste à placer le code du modèle directement dans votre fichier ejs. Désormais, lorsque vous exécutez votre application, vous pouvez voir quelle variable est indéfinie . Par exemple, supposons que vous avez index.ejs et dans ce fichier, vous avez inclus un modèle <%include partials/_pagination.ejs %>. Maintenant, si vous rencontrez cette erreur, copiez et collez simplement le code dans le fichier _pagination de votre index et exécutez votre application pour rechercher la variable non définie.

2

Je n'ai pas la réputation de commenter, alors ... je viens de voir le même symptôme. Dans mon cas, j'ai accidentellement remplacé "currentUser.name" par "currentUser.Name" ("N" en majuscule) à partir d'un exemple du livre "Express In Action", section 8. 

dans routes.js

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

vues/_header.ejs

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

quand je suis revenu à "currentUser.name", le TypeError a disparu

0
The PHM