Chrome DevTools Sources面板支持行断点、条件断点和事件监听器断点;动态脚本需启用source maps才能正确调试;console.table、group、debugger、time及JSON快照等是log的高效替代;Network面板需结合Headers、Response和Timing分析请求失败根因;未捕获Promise错误应通过unhandledrejection事件监听并配置source-map定位。
Chrome DevTools 的 Sources 面板怎么设断点
断点是调试 JavaScript 最直接的入口,Sources 面板支持三种常用方式:
、
、
。点击行号左侧灰色区域可设行断点;右键行号可添加条件断点(例如
);右侧
下勾选
或
可在对应事件触发时暂停。
容易忽略的是:动态插入的脚本(如通过
或
创建)默认不显示在 Sources 列表中,需在右上角三个点菜单里开启
并确保有 sourcemap;否则断点会失效或跳转到压缩后代码。
console.log 不够用时,用哪些替代方案
看变量值没问题,但查异步链路、作用域污染或性能瓶颈就力不从心。更有效的选择包括:
:适合查看数组或对象列表,自动格式化为表格
+
:折叠日志分组,避免混杂
语句:写在代码里,等价于 Sources 面板手动打的断点,但要注意上线前必须删掉,否则用户打开控制台就会卡住
/
:测某段逻辑耗时,比手动记时间戳直观
注意:
输出的是引用,后续修改
会影响控制台显示内容——想看快照得用
或展开后右键
再
。
立即学习
“
Java免费学习笔记(深入)
”;
Network 面板怎么看请求失败的真实原因
看到一个红字
或
不代表后端问题。先点开该请求,在
标签页确认
是否拼错、
是否被拦截;在
或
里看返回体是否含错误详情(比如
);再切到
查是否卡在
(常因连接池满或 DNS 慢)或
(服务端响应慢)。
Comet AI 浏览器
下载 Comet AI 浏览器,体验由 Perplexity AI 驱动的革命性上网方式。内置 AI 助手可实时总结网页、跨标签页对比信息、自动执行任务。告别繁琐操作,让 AI 成为你的浏览副驾,大幅提升研究与工作效率。支持 Windows、macOS、Android 和 iOS。
下载
常见陷阱:
前端
发了
,但 Network 显示请求发到了
,而实际后端跑在
端口——这时要检查
配置或后端 CORS 设置,而不是改 JS 代码。
如何快速定位未捕获的 Promise 错误
页面白屏或功能异常但控制台没报错?很可能是
被 reject 后没接
。Chrome 和 Edge 在 Console 中默认会提示
,但 Firefox 默认不显示——需手动打开设置里的
。
实操建议:
全局监听:
开发时加临时兜底:
Vite / Webpack 项目可在
或
中启用
,否则堆栈指向
这类位置毫无意义
真正难缠的是微任务队列中的错误——比如
里抛错能看见,但
会直接进 unhandledrejection,且堆栈极短,必须靠
事件捕获。
行断点条件断点事件监听器断点user.id === 123Event Listener Breakpointsclickfetcheval()new Function()Enable JavaScript source mapsconsole.log()console.table(data)console.group('API call')console.groupEnd()debuggerconsole.time('fetch')console.timeEnd('fetch')console.log(obj)objconsole.log(JSON.parse(JSON.stringify(obj)))Store as global variablecopy()401500HeadersRequest URLReferrerPreviewResponse{"error": "token expired"}TimingStalledWaiting (TTFB)fetch('/api/user')http://localhost:3000/api/user8080proxyPromise.catch()Uncaught (in promise) Error: ...Enable logging of Promise rejectionswindow.addEventListener('unhandledrejection', e => { console.error('Unhandled rejection:', e.reason); });Promise.reject(new Error('test')).catch(console.error)vite.config.jswebpack.config.jsdevtool: 'source-map'bundle.js:123setTimeoutqueueMicrotask(() => { throw new Error() })unhandledrejection