2016-10-01 70 views
0

如果我做的:Node.js的第一個錯誤

const debug = require('debug')('app'); 
var err = new Error("my error"); 
debug(err); 
err.message = "new error"; 
debug(err); 

我沒有看到新的錯誤消息。但如果我這樣做:

debug(err.message); 

我看到新的錯誤信息。我的問題是真正的'錯誤'是什麼?它的typeofobject但爲什麼我沒有看到所有的對象部分?

回答

0

debug庫遇到一個錯誤,它會記錄error.stack,這是在烤的錯誤信息預先計算的字符串。這就是爲什麼改變錯誤消息創建錯誤後沒有出現在露面您的代碼,因爲error.stack屬性已設置。

你可以看到these lines這種行爲:

if (val instanceof Error) return val.stack || val.message; 

無論哪種方式,已創建的錯誤後,你不應該修改錯誤消息。