通过 100+ 技巧学习 Nuxt!

sentry
@sentry/nuxt

Nuxt 官方 Sentry SDK (实验性)

Sentry

Nuxt 官方 Sentry SDK (Beta 版)

npm versionnpm dmnpm dt

此 SDK 处于 Beta 版。API 稳定,但更新可能包含行为上的细微更改。如果您有任何反馈或疑虑,请在 GitHub 上联系我们。此 SDK 适用于 Nuxt。如果您正在使用 Vue,请在此处查看我们的 Vue SDK

兼容性

Nuxt 最低支持版本为 3.0.0

概述

此软件包是 @sentry/node (服务器端) 和 @sentry/vue (客户端) 的包装器,并添加了与 Nuxt 相关的附加功能。

局限性

  • 服务器监控在开发模式 (nuxt dev) 下不可用

手动设置

1. 前提条件和安装

  1. 安装 Sentry Nuxt SDK
    # Using npm
    npm install @sentry/nuxt
    
    # Using yarn
    yarn add @sentry/nuxt
    

2. Nuxt 模块设置

Sentry Nuxt SDK 基于 Nuxt 模块

  1. @sentry/nuxt/module 添加到 nuxt.config.ts 的模块部分
// nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@sentry/nuxt/module'],
});

3. 客户端设置

在项目根目录中添加 sentry.client.config.ts 文件

import { useRuntimeConfig } from '#imports';
import * as Sentry from '@sentry/nuxt';

Sentry.init({
  // If set up, you can use your runtime config here
  dsn: useRuntimeConfig().public.sentry.dsn,
});

4. 服务器端设置

在项目根目录中添加 sentry.server.config.ts 文件

import * as Sentry from '@sentry/nuxt';

// Only run `init` when process.env.SENTRY_DSN is available.
if (process.env.SENTRY_DSN) {
  Sentry.init({
    dsn: 'your-dsn',
  });
}

由于技术原因 (文件必须在 Nuxt 加载之前加载),在 Sentry 服务器配置文件中使用 useRuntimeConfig 不起作用。为了能够使用 process.env,您必须将 --env-file=.env 添加到您的 node 命令

node --env-file=.env .output/server/index.mjs

或使用 dotenv

import dotenv from 'dotenv';
import * as Sentry from '@sentry/nuxt';

dotenv.config();

Sentry.init({
  dsn: process.env.SENTRY_DSN,
});

上传 Source Maps

要上传 source maps,您必须在 nuxt.config.ts 中启用客户端 source maps。然后,将您的项目设置添加到 nuxt.config.tssentry.sourceMapsUploadOptions

// nuxt.config.ts
export default defineNuxtConfig({
  sourcemap: { client: true },

  modules: ['@sentry/nuxt/module'],
  sentry: {
    sourceMapsUploadOptions: {
      org: 'your-org-slug',
      project: 'your-project-slug',
      authToken: process.env.SENTRY_AUTH_TOKEN,
    },
  },
});

故障排除

如果您在错误跟踪或集成方面遇到任何问题,请参阅官方 Sentry Nuxt SDK 文档。如果文档未提供必要的信息,请考虑在 GitHub 上提交问题。