讲师中心 微信公众号
AI工具推荐 视频效率加速

基于VSCode的Node项目利用Sentry本地探针对未捕获异常进行捕获调试

胖婷同学_6582

胖婷同学_6582

发布时间:2026-07-10 11:13:47

|

146人浏览过

|

来源于php中文网

原创

Sentry 默认不捕获 Node 未捕获异常,必须显式启用 OnUncaughtException 和 OnUnhandledRejection 集成,并确保 Sentry.init() 在入口文件最顶部同步执行,早于任何业务代码;VSCode 调试需配置 launch.json 的 console 为 integratedTerminal 并验证 environment、sampleRate 和 denyUrls。

基于vscode的node项目利用sentry本地探针对未捕获异常进行捕获调试

VSCode 调试 Node 项目时,Sentry 默认抓不到未捕获异常(uncaughtException),必须显式启用 Sentry.init() 的 integrations 配置并确保初始化时机早于任何可能出错的代码。

Node 环境下 Sentry 不上报未捕获异常的典型表现

程序运行中突然退出,控制台打印 FATAL ERROR: ... uncaught exception 或 events.js:292 throw er; // Unhandled 'error' event,但 Sentry 后台查不到对应事件。这是因为 Sentry 的 Node SDK 默认只捕获显式调用 Sentry.captureException() 的错误,不自动监听全局未捕获异常——除非你主动开启对应集成。

  • process.on('uncaughtException') 和 process.on('unhandledRejection') 是 Node 捕获崩溃的关键钩子,Sentry 的 OnUncaughtException 和 OnUnhandledRejection 集成就是基于它们实现的
  • 若未启用这些集成,Sentry 就像“没装监听器”,即使异常炸了也收不到通知
  • 常见误操作:只调用 Sentry.init({ dsn: '...' }),没传 integrations,或把 init() 放在异步逻辑之后(比如 app.listen() 后)

必须在 require 后立即执行 Sentry.init()

Node 的模块加载是同步的,init() 必须在任何业务代码(尤其是可能抛错的 require、new Promise、fs.readFileSync 等)之前执行,否则错过早期异常。

jinn-node
jinn-node

在Jinn网络为自主项目工作赚取代币奖励,让闲置的OpenClaw代理开始工作。

下载
  • 推荐位置:入口文件(如 index.js 或 app.js)最顶部,紧随 'use strict' 之后
  • 错误示例:const app = require('./app'); Sentry.init(...) —— 此时 ./app 里若含同步报错,Sentry 还没启动,就漏掉了
  • 正确写法:Sentry.init({ dsn: '...', integrations: [new Sentry.Integrations.OnUncaughtException(), new Sentry.Integrations.OnUnhandledRejection()] });
  • 注意:Node SDK v7+ 已默认启用这两个集成,但旧版本(v6.x)仍需手动传入;建议显式声明,避免版本差异导致行为不一致

VSCode 调试时异常被吞掉?检查 launch.json 的 console 和 env

VSCode 的 Node 调试器默认会拦截未捕获异常并中断,这反而会让 Sentry 失去上报机会——因为异常没真正“冒泡”到 process 全局监听器。

  • 在 .vscode/launch.json 中添加 "console": "integratedTerminal",让异常输出到终端而非调试面板,保证 uncaughtException 钩子能触发
  • 必要时加 "env": { "NODE_OPTIONS": "--enable-source-maps" },确保堆栈包含原始行号(尤其用 TypeScript 或打包工具时)
  • 如果用了 nodemon 或 ts-node,确保 runtimeExecutable 指向正确可执行文件,并在 args 中传入 --inspect 参数
  • 验证是否生效:故意在入口处写 throw new Error('test');,看 Sentry 是否收到事件,同时终端是否打印堆栈

本地探针调试要验证真实上报路径与采样率

开发时容易忽略 environment 和 sampleRate 导致本地异常看似没上报,其实是被过滤了。

  • 务必设置 environment: 'development',避免和生产环境事件混在一起,也方便在 Sentry 控制台筛选
  • 显式设 sampleRate: 1.0,禁用采样,确保每条异常都发出去(默认是 1.0,但某些配置覆盖后可能变 0)
  • 检查网络面板或终端日志:Sentry 发送请求时会打印 [Sentry] Sending error to Sentry,若没这句,说明根本没触发上报逻辑
  • 注意:本地 localhost 域名可能被 Sentry 的 denyUrls 规则拦截,可在 init 时加 denyUrls: [] 清空黑名单

最容易被忽略的是初始化顺序和集成开关——不是“装了 Sentry 就自动管所有异常”,而是“你得亲手把它焊死在进程启动的第一毫秒”。一旦漏掉 OnUncaughtException 或晚调用 init(),本地调试时看到的崩溃就永远停留在终端里,进不了 Sentry 的时间线。

热门AI工具

更多
SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

相关专题

更多
vscode是什么_vscode怎么安装配置
vscode是什么_vscode怎么安装配置

VS Code(Visual Studio Code)是一款免费、开源的跨平台代码编辑器,由微软开发和维护。它被广泛用于软件开发和编程,支持多种编程语言和框架。VS Code 同时提供了丰富的功能和扩展性,使开发者可以高效地编写、编辑和调试代码。

1215

2023.06.30

vscode怎么运行代码
vscode怎么运行代码

vscode是一个运行于MacOS X、Windows和Linux之上的,针对于编写现代Web和云应用的跨平台源代码编辑器;vscode免费而且功能强大,对JavaScript和NodeJS的支持非常好,自带很多功能,例如代码格式化,代码智能提示补全、Emmet插件等。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2472

2023.07.21

vscode使用的框架介绍
vscode使用的框架介绍

VSCode是一款跨平台代码编辑器,它基于Electron框架和Monaco Editor构建。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

1849

2024.03.14

vscode一般用来写什么语言
vscode一般用来写什么语言

VSCode是一款功能强大的代码编辑器,支持多种编程语言和文件格式。它内置对 JavaScript、Python、Java、C++、TypeScript、HTML/CSS、Go 等语言的支持。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

1707

2024.03.14

vscode可以写什么语言
vscode可以写什么语言

vscode是一款强大的代码编辑器,支持多种编程语言的开发。通过安装扩展,可以为 JavaScript/TypeScript、Python、Java、C#、PHP、Go、Ruby、Rust、HTML/CSS 等语言提供智能代码补全、调试和格式化等功能。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2567

2024.03.15

vscode中文设置方法
vscode中文设置方法

方法一:在设置页面中,搜索“locale”,并选择“zh-cn”。方法二:按“Ctrl Shift P”快捷键,输入“Configure Display Language”,将语言修改为“zh-cn”。如果上述方法无效,可考虑安装中文插件。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

1798

2024.03.15

vscode用途介绍
vscode用途介绍

Visual Studio Code(VSCode)是一款由 Microsoft 开发的多功能文本编辑器,适用于各种编程语言。作为一款开源软件,VSCode 拥有代码高亮、自动补全、调试、Git 集成等强大功能,成为程序员不可或缺的工具。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

1222

2024.03.15

vscode和visualstudio的区别
vscode和visualstudio的区别

Visual Studio是一款功能强大的集成开发环境(IDE),适用于专业开发人员进行复杂项目的构建。而VSCode则是一款轻量级的代码编辑器,更适合各种规模的项目开发。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

1096

2024.03.15

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

0

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn