Next.js 13.2.1项目遇UnhandledRejection错误:TypeError: trace.getSpan is not a function
修复Next.js中
TypeError: trace.getSpan is not a function错误的方案 1. 排查OpenTelemetry依赖冲突
这个错误基本和OpenTelemetry追踪模块的版本冲突有关,Next.js 13.x内置了这套追踪功能,如果你的项目手动装了第三方OpenTelemetry包,很容易出现版本不兼容:
- 打开
package.json,搜索@opentelemetry/*开头的依赖,重点关注@opentelemetry/api和@opentelemetry/tracing - 要么直接移除这些第三方包,要么把版本升级到和Next.js内置版本匹配(13.2.1对应的api版本大概是
1.4.1) - 执行
npm dedupe或yarn dedupe清理依赖树里的重复包
2. 禁用Next.js自动追踪功能
如果不需要APM追踪功能,直接在next.config.js里关闭相关配置:
module.exports = { experimental: { instrumentationHook: false, tracing: false, }, };
修改完成后重启开发服务器,观察错误是否消失。
3. 检查自定义Instrumentation文件
如果项目里使用了instrumentation.ts/js(Next.js的自定义追踪入口文件),仔细排查代码问题:
- 调用
trace.getSpan之前,确保trace是正确初始化的OpenTelemetry Trace实例 - 避免在服务器启动前或者非追踪上下文环境中调用该方法
4. 清理缓存并重新构建
缓存文件异常也可能导致依赖加载出错:
- 删除
.next文件夹和node_modules/.cache目录 - 重新执行
npm install或yarn install安装依赖 - 先运行
npm run build或yarn build完成构建,再启动开发服务器
5. 降级Next.js版本测试
13.2.1可能存在已知bug,尝试降级到13.1.x的稳定版本:
npm install next@13.1.6 # 或者使用yarn yarn add next@13.1.6
内容的提问来源于stack exchange,提问作者MzCa
相关产品推荐
相关产品推荐

