#node.js
#node.js
Вопрос:
Если я сделаю:
const debug = require('debug')('app');
var err = new Error("my error");
debug(err);
err.message = "new error";
debug(err);
Я не вижу нового сообщения об ошибке. Но если я это сделаю:
debug(err.message);
Я вижу новое сообщение об ошибке. Мой вопрос в том, что такое «ошибка» на самом деле? Это typeof
object
так, но почему я не вижу все части объектов?
Ответ №1:
Когда debug
библиотека обнаруживает ошибку, она регистрируется error.stack
, которая представляет собой предварительно вычисленную строку, в которую запечено сообщение об ошибке. Вот почему изменение сообщения об ошибке после создания ошибки, похоже, не отображается в вашем коде, потому error.stack
что свойство было установлено.
Вы можете видеть это поведение в этих строках:
if (val instanceof Error) return val.stack || val.message;
В любом случае вы не должны изменять сообщения об ошибках после создания ошибки.