Next.js集成Sentry生产环境报错:baggageHeaderToDynamicSamplingContext不是函数
baggageHeaderToDynamicSamplingContext is not a function 我用Next.js搭建网站并集成了Sentry,本地、开发和预发布环境都正常,但生产主服务器出现如下报错:
caught TypeError: (0 , i.baggageHeaderToDynamicSamplingContext) is not a function
at Oe (client.js:93:34)
at Ne.setupOnce (browsertracing.js:99:5)
at integration.js:64:19
at Array.forEach (<anonymous>)
at integration.js:60:16
at ha.setupIntegrations (baseclient.js:217:28)
at d.bindClient (hub.js:65:14)
at sdk.js:32:7
at re (sdk.js:110:3)
at sdk.js:18:3
at index.client.js:29:3
at 37942 (sentry.client.config.js:12:1)
at n (bootstrap:21:33)
at e (_app-b4f4ecdac789e1ace475.js:74:2591185)
at _app-b4f4ecdac789e1ace475.js:74:2591240
at n.O (chunk loaded:25:12)
at _app-b4f4ecdac789e1ace475.js:74:2591278
at t (jsonp chunk loading:36:28)
已经尝试删除node_modules并重新执行yarn install,但问题未解决,且无法在本地、开发或预发布环境复现错误。补充背景:应用部署在https://myappexample.com/app,配置了重定向规则,仅将根域名https://myappexample.com重定向至其他域名。
检查Sentry依赖版本一致性
这个报错大概率是Sentry相关包版本不匹配导致的,比如@sentry/nextjs和它依赖的@sentry/browser、@sentry/tracing版本不一致。执行yarn list @sentry/*查看所有Sentry包的版本,确保所有包版本完全相同。如果有不一致的,手动在package.json里指定统一版本:"@sentry/nextjs": "7.XX.X", "@sentry/browser": "7.XX.X", "@sentry/tracing": "7.XX.X"之后重新执行
yarn install,清理生产环境缓存后重新构建部署。强制清理生产构建缓存
Next.js生产构建可能残留旧缓存,导致Sentry的旧代码没被更新。部署前执行以下命令:yarn cache clean rm -rf .next yarn build确保生产环境部署的是全新构建的产物,避免缓存的旧代码和新依赖冲突。
排查重定向规则对Sentry初始化的影响
应用部署在子路径/app,根域名重定向可能导致Sentry初始化时的资源加载路径异常。检查entry.client.config.js里的初始化代码,确认dsn和environment配置正确,且没有因为路径重定向引发的资源加载错误。可以临时关闭根域名重定向,验证是否是重定向规则导致的问题。临时禁用动态采样功能
如果上述方法都无效,尝试临时关闭Sentry的动态采样功能,修改Sentry.init配置:Sentry.init({ // 其他原有配置 tracesSampleRate: 1.0, // 用固定采样率替换动态采样逻辑 // 移除或注释掉所有和dynamicSamplingContext相关的配置 });重新构建部署后看报错是否消失。
内容的提问来源于stack exchange,提问作者Prieyudha Akadita S

