Ho una funzione chiamata a
che accetta un callback, che viene invocato con un errore se ce n'è uno.Qual è il modo giusto per creare messaggi di errore che vengono restituiti in una richiesta Express?
a
viene richiamato in una richiesta di instradamento espresso. Se c'è un errore, l'errore dovrebbe essere la risposta della richiesta.
function a(cb) {
cb(new Error('Some error message'))
}
app.get('/', function (req, res) {
a(function (error) {
if (error) {
res.json(error, 400)
}
res.send('No error')
})
})
Ho esaminato il codice per espresso, e sembra che res.json
in stringa mia error
. Tuttavia, il risultato di questo è una stringa vuota:
> var e = new Error('Some error message')
undefined
> JSON.stringify(e)
'{}'
> e.message
'Some error message'
Ci sono modi ho potuto ottenere il mio percorso di restituire il messaggio di errore qui, come la conversione l'oggetto errore toString
nel mio percorso. Tuttavia, vorrei sapere qual è la migliore pratica per la formattazione dei messaggi di errore nelle API dei nodi e se ciò cambi le cose qui. Devo formattare i messaggi di errore in modo diverso, o devo solo gestire l'oggetto Error
nel percorso, come ad esempio:
res.json({ error: error.message }, 400)
Alcuni dettagli sul perché manca l'e.message: http://stackoverflow.com/questions/18391212/is-it-not-possible-to-stringify-an-error-using-json-stringify. – Smartkid