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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。