error.stack
error.stack 屬性是一個字符串,說明了代碼中實例化Error 的點。
Error: Things keep happening!
   at /home/gbusey/file.js:525:2
   at Frobnicator.refrobulate (/home/gbusey/business-logic.js:424:21)
   at Actor.<anonymous> (/home/gbusey/actors.js:400:8)
   at increaseSynergy (/home/gbusey/actors.js:701:6)
第一行的格式為 <error class name>: <error message> ,然後是一係列堆棧幀(每行以“at”開頭)。每個框架都說明了代碼中導致錯誤生成的調用站點。 V8 嘗試為每個函數顯示一個名稱(按變量名稱、函數名稱或對象方法名稱),但偶爾會找不到合適的名稱。如果 V8 無法確定函數的名稱,則隻會顯示該幀的位置信息。否則,將顯示確定的函數名稱,並在括號中附加位置信息。
框架隻為 JavaScript 函數生成。例如,如果執行同步通過名為cheetahify 的 C++ 插件函數,該函數本身調用 JavaScript 函數,則表示 cheetahify 調用的幀將不會出現在堆棧跟蹤中:
const cheetahify = require('./native-binding.node');
function makeFaster() {
  // `cheetahify()` *synchronously* calls speedy.
  cheetahify(function speedy() {
    throw new Error('oh no!');
  });
}
makeFaster();
// will throw:
//   /home/gbusey/file.js:6
//       throw new Error('oh no!');
//           ^
//   Error: oh no!
//       at speedy (/home/gbusey/file.js:6:11)
//       at makeFaster (/home/gbusey/file.js:5:3)
//       at Object.<anonymous> (/home/gbusey/file.js:10:1)
//       at Module._compile (module.js:456:26)
//       at Object.Module._extensions..js (module.js:474:10)
//       at Module.load (module.js:356:32)
//       at Function.Module._load (module.js:312:12)
//       at Function.Module.runMain (module.js:497:10)
//       at startup (node.js:119:16)
//       at node.js:906:3
位置信息將是以下之一:
native,如果幀表示 V8 內部的調用(如[].forEach中)。plain-filename.js:line:column,如果框架表示 Node.js 內部的調用。/absolute/path/to/file.js:line:column,如果框架表示用戶程序中的調用(使用 CommonJS 模塊係統)或其依賴項。<transport-protocol>:///url/to/module/file.mjs:line:column,如果框架表示用戶程序中的調用(使用 ES 模塊係統),或其依賴項。
訪問 error.stack 屬性時,會延遲生成表示堆棧跟蹤的字符串。
堆棧跟蹤捕獲的幀數受限於 Error.stackTraceLimit 或當前事件循環滴答上的可用幀數中的較小者。
相關用法
- Node.js Error.message用法及代碼示例
 - Node.js Error.captureStackTrace(targetObject[, constructorOpt])用法及代碼示例
 - Node.js EventEmitter用法及代碼示例
 - Node.js ECDH.convertKey(key, curve[, inputEncoding[, outputEncoding[, format]]])用法及代碼示例
 - Node.js ECDH用法及代碼示例
 - Node.js EventTarget.addEventListener(type, listener[, options])用法及代碼示例
 - Node.js ECDH.setPublicKey(publicKey[, encoding])用法及代碼示例
 - Node.js ServerHttp2Stream http2stream.pushStream(headers[, options], callback)用法及代碼示例
 - Node.js http2.Http2ServerRequest request.url用法及代碼示例
 - Node.js request.socket用法及代碼示例
 - Node.js assert.notEqual(actual, expected[, message])用法及代碼示例
 - Node.js tlsSocket.authorized用法及代碼示例
 - Node.js zlib.deflateRaw()用法及代碼示例
 - Node.js http.IncomingMessage message.rawHeaders用法及代碼示例
 - Node.js Console用法及代碼示例
 - Node.js GM transparent()用法及代碼示例
 - Node.js URL.protocol用法及代碼示例
 - Node.js http.Agent.reuseSocket(socket, request)用法及代碼示例
 - Node.js fs.filehandle.datasync()用法及代碼示例
 - Node.js socket.bind()用法及代碼示例
 - Node.js v8.getHeapSpaceStatistics()用法及代碼示例
 - Node.js http2session.destroyed用法及代碼示例
 - Node.js http.ServerResponse response.statusCode用法及代碼示例
 - Node.js Buffer buf.writeBigUInt64BE(value[, offset])用法及代碼示例
 - Node.js Http2ServerResponse.finished用法及代碼示例
 
注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 Error.stack。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
