fields
ist im folgenden Code nicht definiert, aber es wird nicht in der Konsole protokolliert, wenn der Fehler auftritt. In diesem speziellen Fall, warum, und was ist der De-facto-Weg, damit umzugehen?JavaScript-Fehler werden nicht in der Konsole angezeigt?
"Testing"
wird in der Konsole protokolliert (Zeile # 2), aber die undefinierte Variable fields
(Zeile # 4) wird nicht gemeldet. Der Fehler wird in einer API-Antwort (Zeile 5) zurückgegeben, aber ohne relevante Informationen wie Zeilennummer, Stack-Trace usw.
Wie kann ich Fehler wie dieses Protokoll auf der Konsole machen, und warum sind sie nicht?
export function post(req, res) {
console.log("Testing")
User.create(getFields(req, ["name_first", "name_last"]))
.then(user => respondJSON (res, fields, { status: 201 }))
.catch(err => respondError (res, err))
}
Da der Fang mit einem Fehler reagiert, erhalte ich die folgende API-Antwort:
{
"error": true,
"data": {
"message": "fields is not defined"
}
}
Ich bin mit Babel 6 und babel-Knoten meinen Code durch NPM-Skripte ausführen. Ich benutze auch Morgan Logging. Durch das Entfernen der Middleware für die Protokollierung wird die Fehlerausgabe nicht geändert.
Fehler tun, die in Versprechungen passieren nicht an die Konsole propagieren? Wenn ich zum Beispiel "console.log (x)" in die Chrome-Konsole eintippe, bekomme ich "Uncaught ReferenceError: x ist nicht definiert" und einen Stack-Trace. – Connorelsea
Mögliches Duplikat von [Warum kann ich nicht in einen Promise.catch-Handler werfen?] (Http://stackoverflow.com/questions/30715367/why-can-i-not-throw-inside-a-promise-catch-handler) – jib