Mam funkcję o nazwie a
, która akceptuje wywołanie zwrotne, które jest wywoływane z błędem, jeśli istnieje.Jaki jest właściwy sposób tworzenia komunikatów o błędach, które są zwracane w żądaniu ekspresowym?
a
jest wywoływany w żądaniu trasy ekspresowej. Jeśli wystąpi błąd, błąd powinien być odpowiedzią na żądanie.
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')
})
})
Szukałem w kodzie Express, a wydaje się, że res.json
będzie stringify mój error
. Jednak wynik ten jest pusty ciąg znaków:
> var e = new Error('Some error message')
undefined
> JSON.stringify(e)
'{}'
> e.message
'Some error message'
Istnieją sposoby, wpadło mi w drogę, aby wrócić tu komunikat o błędzie, takie jak przekształcenie obiektu błędzie toString
w mojej trasie. Chciałbym jednak wiedzieć, jaka jest najlepsza praktyka w zakresie formatowania komunikatów o błędach w interfejsach API węzła i czy to wszystko zmienia tutaj. Należy formatować moje komunikaty o błędach inaczej, czy mam po prostu obsłużyć obiekt Error
w trasie, takich jak:
res.json({ error: error.message }, 400)
Kilka szczegółów, dlaczego brakuje e.message: http://stackoverflow.com/questions/18391212/is-it-not-possible-to-stringify-an-error-using-json-stringify. – Smartkid