You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js自定义webpack配置下@sentry/nextjs浏览器端cwd报错如何解决

根因分析

该报错是服务端专属的Sentry SDK代码被错误打包进了客户端运行包导致的:报错堆栈里的@sentry/nextjs/esm/index.server.js是仅支持在Node.js环境运行的模块,内部调用了Node.js特有的process.cwdAPI,浏览器环境不存在该API,所以抛出了属性读取错误。
你之前配置process fallback、注入process polyfill的方法无法解决问题,是因为没有从根源上避免服务端SDK进入客户端打包流程,哪怕有process对象,服务端SDK内部还有大量其他Node专属API依然会触发报错。

解决步骤
  1. 修正Sentry客户端配置
    打开你的sentry.client.config.js文件,删除所有引入@sentry/node、@sentry/nextjs/server的代码,客户端仅需要引入@sentry/nextjs的客户端导出即可,参考配置:
// sentry.client.config.js
import * as Sentry from '@sentry/nextjs';

Sentry.init({
  dsn: "你的Sentry项目DSN",
  tracesSampleRate: 1.0,
  // 其他客户端专属配置,不要加服务端专属的配置项
});
  1. 调整next.config.js的webpack配置
    在next.config.js的webpack配置中添加客户端打包时的别名转换,避免服务端模块被引入客户端包,同时删除你之前添加的无效配置:
// next.config.js
const { withSentryConfig } = require('@sentry/nextjs');

const nextConfig = {
  webpack: (config, { isServer }) => {
    // 仅客户端打包时生效
    if (!isServer) {
      // 将服务端Sentry模块别名指向客户端模块,避免误引入
      config.resolve.alias['@sentry/nextjs/server'] = '@sentry/nextjs/client';
      // 删除你之前加的process: false fallback配置,保留其他Node核心模块的false配置即可
      delete config.resolve.fallback.process;
    }
    return config;
  },
  // 其他你的Next.js配置项
};

// 用Sentry配置包裹Next.js配置,v6版本需要按照这个格式配置
module.exports = withSentryConfig(nextConfig, {
  silent: true,
});
  1. 清理冗余依赖和配置
  • 卸载你额外安装的process polyfill:npm uninstall process
  • 删除你之前在webpack plugins中添加的webpack.ProvidePlugin注入process的相关配置,Next.js本身会处理客户端必要的process变量,额外注入会导致冲突。
  1. 重启开发服务
    清理Next.js缓存后重启服务:
rm -rf .next
npm run dev

重启后访问页面即可解决该报错。


内容的提问来源于stack exchange,提问作者user372225

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:48:01