MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Errore Express/Node.js:Errore di riferimento:la risoluzione non è definita

  1. Puoi chiamare app.render a livello di root e res.render solo all'interno di una route/middleware.
  2. app.render restituisce sempre l'html nella funzione di callback, mentre res.render lo fa solo quando hai specificato la funzione di callback come terzo parametro. Se chiami res.render senza il terzo parametro/funzione di callback l'html reso viene inviato al client con un codice di stato pari a 200.

Dai un'occhiata ai seguenti esempi.

app.render

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

res.render senza terzo parametro

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

res.render con terzo parametro

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 utilizza app.render internamente per eseguire il rendering dei file modello.
  2. can't set headers significa che non puoi entrare nel corpo.
  3. res.render() la funzione compila il tuo modello (per favore non usare ejs), inserisce i locali lì e crea un output html da queste due cose.

// qui imposti che tutti i modelli si trovano in /views directory

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});

Quindi, il percorso del modello è views/ (prima parte) + local (seconda parte) + .ejs (terza parte) ===views/local.ejs