Node.js启动必须带--inspect,否则VSCode无法连接Chrome DevTools生成火焰图;核心配置为"type": "pwa-node"、"request": "launch"、"runtimeArgs": ["--inspect"],录制时需启用JS stack traces并导出.cpuprofile文件分析。

Node.js 启动必须带 --inspect,否则火焰图根本连不上
VSCode 本身不采样 CPU 数据,它只负责启动进程并把调试端口暴露出来。如果你直接用 node app.js 启动,哪怕装了再多插件,Chrome DevTools 也连不上,更别说生成火焰图。
关键不是“装什么扩展”,而是“怎么启动”。
常见错误:
• 用 nodemon app.js 而没加 --inspect
• 在终端手动运行 node app.js,但 launch.json 没配 runtimeArgs
• 配了 "--inspect-brk" 却想分析用户交互——它卡在第一行,根本跑不到业务逻辑
launch.json 里只写对这三行,就能进 Chrome DevTools 录制火焰图
不用改一堆字段,核心就三个配置项:
• "type": "pwa-node"(新版推荐,比旧 "node" 更稳定)
• "request": "launch" 或 "attach"(attach 适合已运行的进程)
• "runtimeArgs": ["--inspect"](去掉 -brk,让程序正常跑起来再录)
示例最小配置:
{
"version": "0.2.0",
"configurations": [{
"name": "Profile Node App",
"type": "pwa-node",
"request": "launch",
"program": "${workspaceFolder}/app.js",
"runtimeArgs": ["--inspect"],
"console": "integratedTerminal"
}]
}
启动后,VSCode 底部状态栏会出现 “Open dedicated DevTools for Node.js” 链接,点它,自动跳转到 chrome://inspect 页面。
根据 package.json 中的 engines 字段自动检测 Node.js 版本需求,未安装 nvm 时自动安装并切换至对应版本。支持 Windows、macOS、Linux。适用于 Node.js 项目开发、版本切换和环境配置。
在 Chrome DevTools 里点两下,才能拿到真正有用的火焰图
很多人点了 Performance → Start profiling,但录完发现全是空的或只有几帧——因为默认录制模式不抓 JS 执行栈。
正确操作:
• 点右上角三个点 → More tools → Rendering → 勾选 “JS stack traces”(否则函数名全显示为 (anonymous))
• 回到 Performance 标签页,点击左上角 ● 开始录制
• 复现你要测的操作(比如点按钮、加载列表)
• 停止录制 → 在底部 “Bottom-Up” 或 “Call Tree” 视图里找耗时最长的 functionName
注意:self time 是该函数自身执行时间(不含子调用),total time 是含所有子调用的总耗时,优化优先看 self time 高的函数
别信“VSCode 内置火焰图”宣传,.cpuprofile 文件才是唯一通用入口
某些插件声称“一键生成火焰图”,实际只是把 Chrome 导出的 .cpuprofile 文件拖进 VSCode 查看器——但这个查看器功能极简,不能折叠、不能搜索、不能对比两次 profile。
真正可复用的做法:
• 在 Chrome DevTools 的 Performance 面板右键 → “Save profile” → 得到 profile-xxx.cpuprofile
• 把它拖进 VSCode,会以树形结构展开,但仅限基础浏览
• 如需深度分析(比如查某函数在不同调用链下的耗时差异),必须用 chrome://tracing 或开源工具如 speedscope 打开该文件
Windows/macOS/Linux 全平台都认这个格式,跨团队共享也靠它,别转成 SVG 或 PNG——丢掉调用上下文










