@farm.js/sentry

中文文档
0.1.48发布于 2026/11/01MITTypeScriptES Module

为Farm.js提供错误报告和跟踪

中文使用文档
文档目录9 节
  1. 安装
  2. 配置
  3. 初始化早期
  4. 它是做什么的
  5. Serverless
  6. 选项
  7. 源地图
  8. 运行时支持
  9. 自带SDK

@farm.js /哨兵

为Farm.js应用程序提供错误报告和跟踪。它映射了Farm的请求、渲染和 在Sentry上构建生命周期,这样错误就会随着路由上下文到达,请求也会被跟踪。

看到 稳定性和支持 因为这个包裹保证了什么。

安装

pnpm add @farm.js/sentry @sentry/node

@sentry/node 是可选的对等依赖项。如果一个 dsn 已配置且未安装, 插件记录一个明显的错误,并继续不报告,而不是阻止错误 从申请开始。

配置

import { defineConfig } from "@farm.js/core";
import { sentryPlugin } from "@farm.js/sentry";

export default defineConfig({
  plugins: [
    sentryPlugin({
      dsn: process.env.SENTRY_DSN,
      tracesSampleRate: 0.1,
      sourceMaps: true,
    }),
  ],
});

初始化早期

Node SDK在其他模块加载时给它们打补丁,因此它必须在其他模块之前运行 应用程序。为此添加一个检测文件:

// src/instrumentation.ts
import { registerSentry } from "@farm.js/sentry";

export const register = registerSentry({
  dsn: process.env.SENTRY_DSN,
  tracesSampleRate: 0.1,
});

没有这个插件仍然报告错误,但SDK的自动数据库和HTTP 仪器将无法连接。

它是做什么的

钩行为
runtime.start初始化SDK(如果还没有),并监听错误事件
runtime.context按路由模式命名请求范围
runtime.after设置响应的跨度状态
runtime.error用路由、类型和请求上下文捕获异常
runtime.close在关机时刷新挂起事件
build.configure以下情况下启用源映射 sourceMaps 设置

span是通过路由模式而不是路径名来命名的,所以 /users/[id] 保持一个span名 而不是每个用户一个。

哪里SDK自己的HTTP工具已经为请求打开了一个跨度,插件 重命名其中一个,而不是启动另一个,因此自动HTTP和数据库范围保持嵌套 根据要求。它只在没有活动时创建一个span。

Serverless

可以在没有关闭信号的情况下终止进程的主机永远不会运行 runtime.close,所以 挂起的事件丢失。而是在请求内部刷新:

sentryPlugin({
  dsn: process.env.SENTRY_DSN,
  flushOnResponse: true,
});

同花顺递给 waitUntil,因此主机将使调用保持活动状态,直到调用完成。

选项

选项默认的描述
dsn哨兵项目DSN。
environment仪器模式环境的名字。
release部署的发布标识符。
tracesSampleRate被跟踪请求的比例。总是发送错误。
sendDefaultPiifalse包括请求头和用户数据。
enabledtrue设置false注册钩子但不报告任何内容。
sdk@sentry/node使用SDK模块,而不是导入它。
flushOnResponsefalse在每次响应和请求失败后刷新。
flushTimeoutMs2000刷新超时。
sourceMapsfalse在生产构建中生成源映射。不上传,见下文。

sendDefaultPii 默认情况下关闭,因为错误事件可以携带请求标头和用户 数据。

源地图

sourceMaps: true 仅在生产构建期间生成源映射。它不上传 把它们传给哨兵,这样在地图被单独上传之前,生产堆栈的痕迹就会被最小化, 例如 sentry-cli. 尚未实现从构建中上传。

农场只有在源地图关闭时才会使用它的快速Oxc迷你车,这样它们才能移动 缩小到Nitro的简洁:

pnpm add -D @rollup/plugin-terser

如果没有它,生产构建就会失败 Cannot find module '@rollup/plugin-terser'.

运行时支持

节点预置。 @sentry/node 不运行在Cloudflare工人,需要什么 @sentry/cloudflare 相反,所以 registerSentry 不做手术吗 edge 和 bun 运行时。跟踪边缘支持 分开。

自带SDK

sdk 接受任何与插件使用的小结构接口相匹配的内容,这也是 如何对包进行单元测试:

import * as Sentry from "@sentry/node";

sentryPlugin({ sdk: Sentry });

版本与发布记录

@farm.js/sentry 共发布 97 个版本,首次发布于 2026/08/28;过去 12 个月发布了 97 个版本。

版本发布日期距今
0.1.48latest2026/11/012 天前
0.1.472026/10/313 天前
0.1.462026/10/313 天前
0.1.452026/10/313 天前
0.1.442026/10/313 天前
0.1.432026/10/304 天前

其他发布通道:beta → 0.1.3-beta.0。

关于 @farm.js/sentry 的常见问题

@farm.js/sentry 是什么?

为Farm.js提供错误报告和跟踪

如何安装 @farm.js/sentry?

在项目目录运行 npm install @farm.js/sentry,或使用 pnpm add / yarn add / bun add。

@farm.js/sentry 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@farm.js/sentry 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@farm.js/sentry 可以商用吗?

@farm.js/sentry 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@farm.js/sentry 还在维护吗?

最新版本 0.1.48 发布于 2026/11/01(2 天前);至今共发布 97 个版本,其中过去 12 个月发布了 97 个;首次发布于 2026/08/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。