可在devtools中设断点并修改运行时行为:通过sources面板设断点、console修改变量或函数、blackbox绕过压缩、条件断点筛选场景,所有操作仅当前会话生效。

在 JS 项目中,你可以直接在浏览器开发者工具(DevTools)中设置断点,暂停执行后临时修改函数逻辑或返回值,快速验证行为,无需改源码、重新构建或刷新页面。
在源码中设断点并修改运行时行为
打开 DevTools(F12 或 Cmd+Opt+I),切换到 Sources 面板,找到对应 JS 文件(支持 webpack sourcemap 的原始代码)。点击行号左侧设置断点(如函数入口、return 前一行)。刷新或触发该函数后,执行会暂停。
- 在 Console 面板中直接输入新逻辑,例如:
return "mocked value"(注意:不能直接写 return,需用eval或改局部变量) - 更稳妥的方式是:在断点暂停时,在 Scope 面板里右键变量 → Set value,或在 Console 中给函数内变量赋新值(如
result = { ok: true }) - 若想跳过原 return,可在断点行按 F8 跳过,再手动在 Console 中输入
debugger插入新断点,或用 Step Over (F10) 逐行走到你想注入的位置
用“黑盒脚本”绕过压缩干扰
如果项目用了压缩代码(如 minified bundle.js),原始函数名和结构丢失,断点难定位。可在 Sources 面板右键该文件 → Blackbox script,然后回到 Debugger 面板,用 Event Listener Breakpoints 或 XHR/fetch Breakpoints 触发后再跳转到 sourcemap 对应的原始文件中断点。
在 Linux 上通过 Chrome 挂载/VNC 自动发布小红书长笔记。Agent 撰写标题和正文后执行 xhs_publish.sh --publish --submit,触发小红书发布。
- 确保构建时开启了
devtool: 'source-map'(Webpack)或sourceMaps: true(Vite),否则无法映射到可读代码 - 在 Settings → Preferences → Sources 中勾选 Enable JavaScript source maps 和 Auto detect source maps
临时重写函数(适用于调试期间多次调用)
在断点暂停状态下,打开 Console,直接覆盖当前作用域下的函数引用:
- 若函数是局部声明(
function foo() {...}),在断点所在作用域内执行:foo = () => "hijacked" - 若函数挂载在全局(
window.apiCall)或模块对象上,直接赋值:window.apiCall = () => Promise.resolve({ data: "fake" }) - 注意:重写仅对后续调用生效;已进入执行栈的函数体不会改变,但下次调用就会走新逻辑
配合条件断点与修改返回值
右键断点 → Edit breakpoint,输入条件(如 id === 123),让断点只在特定场景触发。暂停后,在 Console 中模拟返回:
- 假设原函数最后一行是
return data;,你可以在断点停住时输入:data = { id: 123, name: "test-modified" } - 然后按 F8 继续,函数就会返回你刚设的值
- 也可用
debugger语句插入代码中(开发时临时加,上线前删),比手动设断点更快捷
不复杂但容易忽略:所有这些操作都只在当前 DevTools 会话中生效,关掉标签页就清空,不影响真实代码。适合快速验证边界 case、UI 响应或 API 异常流程。










