MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Erreur Express/Node.js :erreur de référence :la résolution n'est pas définie

  1. Vous pouvez appeler app.render au niveau racine et res.render uniquement à l'intérieur d'une route/middleware.
  2. app.render renvoie toujours le html dans la fonction de rappel, alors que res.render ne le fait que lorsque vous avez spécifié la fonction de rappel comme troisième paramètre. Si vous appelez res.render sans le troisième paramètre/fonction de rappel, le rendu HTML est envoyé au client avec un code d'état de 200.

Jetez un œil aux exemples suivants.

app.render

app.render('index', {title: 'res vs app render'}, function(err, html) {
    console.log(html)
});

res.render sans troisième paramètre

app.get('/render', function(req, res) {
    res.render('index', {title: 'res vs app render'})
})

res.render avec le troisième paramètre

app.get('/render', function(req, res) {
    res.render('index', {title: 'res vs app render'}, function(err, html) {
        console.log(html);
        res.send('done');
    })
})
  1. res.render utilise app.render en interne pour rendre les fichiers de modèle.
  2. can't set headers signifie que vous ne pouvez pas entrer dans le corps.
  3. res.render() compile votre modèle (veuillez ne pas utiliser ejs), y insère des éléments locaux et crée une sortie html à partir de ces deux éléments.

// Ici, vous définissez que tous les modèles sont situés dans /views répertoire

app.set('views', __dirname + '/views');

// here you set that you're using `ejs` template engine, and the
// default extension is `ejs`
app.set('view engine', 'ejs');

// here you render `local` template
response.render("local", {local: local_json});

Ainsi, le chemin du modèle est views/ (première partie) + local (deuxième partie) + .ejs (troisième partie) ===views/local.ejs