报错与调用栈Stack Trace
你可能会说
终端里报了一大段错,我该把哪一行发给 AI?
程序出错时打印的位置清单,按调用顺序列出从入口到出错点的文件与行号程序运行崩溃时终端打印的大段红字中,调用栈按先后顺序列出了出错时刻的所有嵌套函数。最顶层往往是底层的报错触发点,向下寻找业务代码所在的文件与行号,才是排查真实逻辑缺陷的最直接切入点。
也常被叫作调用栈错误堆栈Stack Trace
延伸阅读 · 权威出处
终端里报了一大段错,我该把哪一行发给 AI?
$ node save.js
save.js:24
return items.map((row) => row);
^
TypeError: Cannot read properties of undefined (reading 'map')function handleSave(request) { const items = loadRows(request.file); return items.map((row) => row.total);}function loadRows(file) { const items = readFile(file); return items.map((row) => row);}这是你自己的文件:items 是 undefined,第 24 行对它调用了 .map。先在这里找原因。
报错第一行给出出错类型和位置;调用栈按“出错位置 → 调用者”排列。先找属于你自己文件的帧,再决定改哪里。
最上面是出错那一刻的位置:报错停在了哪一行、哪个文件,栈顶先给出这个位置;接着是“谁调用了它”的上一环,一层层往上到入口。
只找你自己的文件:栈里可能混有运行环境或第三方库的内部帧。属于你自己文件的帧才对应你写过的代码,是修改的起点。
类型信息指向变量:TypeError: Cannot read properties of undefined 说明出错时某个值是空的;结合出错行的代码,就能定位是哪个变量没有值。
运行 node save.js 报 TypeError: Cannot read properties of undefined,栈里 at loadRows (save.js:24:21) 是我自己的文件。请先读 save.js 第 24 行附近的代码,说明 items 为什么是 undefined,改完后重新运行确认不再报错。