与PHP类似,JavaScript也可以获取详细的错误调用栈信息,以下是几种实现方式:
try {
// 可能出错的代码
someUndefinedFunction();
} catch (e) {
console.error(e.stack);
// 输出类似:
// ReferenceError: someUndefinedFunction is not defined
// at <anonymous>:3:5
// at ...
}
function MyError() {
Error.captureStackTrace(this, MyError);
}
try {
throw new MyError();
} catch (e) {
console.log(e.stack);
}
function outer() {
middle();
}
function middle() {
inner();
}
function inner() {
console.trace(); // 打印当前位置的调用栈
}
outer();
现代浏览器开发者工具(F12)会自动显示完整的调用栈信息。
stacktrace-js:跨浏览器堆栈跟踪库
import StackTrace from 'stacktrace-js';
StackTrace.get().then(stack => {
console.log(stack);
}).catch(err => {
console.log(err);
});
trace (Node.js)
const trace = require('trace');
trace(); // 会在后续错误中显示更详细的调用栈
// 启用异步堆栈跟踪
Error.stackTraceLimit = Infinity;
process.on('uncaughtException', (err) => {
console.error('Caught exception:', err.stack);
});
这些方法可以帮助你获得类似PHP的详细调用栈信息,便于调试和错误追踪。