温馨提示×

如何解读js日志报错

小樊
47
2026-09-08 13:38:27
栏目: 编程语言

解读 JavaScript 日志报错,通常可以分**“看哪里 → 看什么 → 怎么查 → 怎么修”**四个步骤来做。下面用一套通用方法,配合常见示例说明。


一、先定位:报错在哪里

1. 浏览器控制台(前端)

  • 打开方式:F12 → Console
  • 关注:
    • 红色 ❌ 错误
    • 文件路径 + 行号(如 app.js:23

2. Node.js(后端)

  • 终端直接打印
  • 或日志文件(如 error.log

二、看报错结构的 5 个关键信息

一个典型 JS 报错通常包含:

TypeError: Cannot read properties of undefined (reading 'name')
    at getUser (app.js:23:15)
    at main (app.js:30:5)

1. 错误类型(最重要)

常见类型:

  • TypeError:类型不对(最常见)
  • ReferenceError:变量未定义
  • SyntaxError:语法写错
  • RangeError:数值越界
  • Promise / Async 相关:未捕获异常

2. 错误描述

Cannot read properties of undefined (reading ‘name’)

意思是:

  • 你访问了一个 undefined
  • 还想读它的 .name

3. 调用栈(Call Stack)

at getUser (app.js:23)
at main (app.js:30)

说明:

  • 错在 getUser
  • main 调用它时出的问题

4. 行号 & 列号

  • 直接跳到对应代码
  • 通常错误在这一行或上一行

5. 上下文(前后日志)

  • 前面是否有 warning
  • 是否异步导致顺序错乱

三、最常见 JS 报错 & 解读示例

1️⃣ TypeError: xxx is not a function

const a = 123;
a(); // TypeError

✅ 原因:把非函数当函数调用


2️⃣ Cannot read properties of undefined

const user = undefined;
console.log(user.name);

✅ 原因:对象没拿到(接口慢 / 写错字段)

✅ 修复:

user?.name

3️⃣ ReferenceError: xxx is not defined

console.log(a); // a 没声明

✅ 原因:

  • 拼写错误
  • 作用域问题

4️⃣ SyntaxError: Unexpected token

if (true) {
  console.log('hi')

✅ 原因:少括号 / 少分号 / JSON 格式错


5️⃣ UnhandledPromiseRejection

fetch('/api').then(res => res.json())

✅ 原因:Promise 没 catch

✅ 修复:

.catch(err => console.error(err))

四、实操排查流程(推荐)

✅ 标准排查顺序

  1. 看错误类型
  2. 看描述和行号
  3. 看调用栈
  4. 加 console.log 打断点
  5. 确认数据来源(接口 / 状态 / 参数)

五、进阶技巧

✅ 使用 debugger

debugger;

✅ 打印完整错误

try {
  ...
} catch (e) {
  console.error(e.stack);
}

✅ 浏览器 Source 面板

  • 直接看到变量值
  • 单步执行

六、如果你愿意,我可以帮你“现场解读”

你可以直接贴:

  • 报错完整信息
  • 相关代码片段
  • 运行环境(浏览器 / Node / 框架)

我可以逐行帮你翻译并报错原因 + 修复方案

0