Node.js первая-ошибка

#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;
  

В любом случае вы не должны изменять сообщения об ошибках после создания ошибки.