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

在Vercel部署Next.js应用时遭遇RangeError:调用栈超出最大值

解决Next.js在Vercel部署时的RangeError栈溢出问题

错误分析

该错误是micromatch库处理路径匹配正则时触发的递归调用栈溢出,核心诱因通常是Next.js配置中的路径匹配规则不规范,或项目中存在特殊命名的文件/目录。

解决方案

1. 检查并修正next.config.js中的匹配规则

  • 排查webpack配置里的exclude/include数组、experimental.appDir相关路径配置,移除冗余/无限递归的通配符(比如**/**这类重复写法)
  • 示例修正:
    // 错误写法(冗余通配符)
    module.exports = {
      webpack: (config) => {
        config.module.rules.push({
          test: /\.svg$/,
          exclude: ['**/node_modules/**/**'],
          use: ['@svgr/webpack'],
        });
        return config;
      },
    };
    
    改为:
    // 正确写法(精确匹配)
    module.exports = {
      webpack: (config) => {
        config.module.rules.push({
          test: /\.svg$/,
          exclude: /node_modules/,
          use: ['@svgr/webpack'],
        });
        return config;
      },
    };
    

2. 重命名项目中的特殊字符文件/目录

  • 排查是否存在名称包含*、?、[]这类micromatch会解析为通配符的文件/目录,直接重命名移除特殊字符即可。

3. 升级Next.js到最新稳定版

  • 旧版本Next.js打包依赖的micromatch可能存在递归bug,执行以下命令升级:
    npm install next@latest
    

4. 清理本地缓存后重新构建部署

  • 先在本地验证构建正常,再推送代码到Vercel:
    rm -rf .next node_modules package-lock.json
    npm install
    npm run build
    
    本地构建成功后,再推送代码触发Vercel部署。

5. 调整Vercel构建环境配置

  • 进入Vercel项目的Settings > Build & Development Settings,尝试切换Node.js版本(比如从16.x切换到18.x)
  • 禁用构建缓存选项,强制重新安装依赖后构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 02:52:19