部署Next.js项目到Vercel时出现RangeError问题求助
Next.js 14.0.4 部署Vercel时RangeError问题排查与解决
问题描述
本地执行npm run build可正常构建Next.js 14.0.4项目,但部署到Vercel时触发RangeError: Maximum call stack size exceeded,错误发生在构建的「Collecting build traces」阶段,错误栈指向Next.js内置的micromatch模块。
完整构建日志
[14:00:08.689] Cloning github.com/DanKamNdi/sheria-ai (Branch: launch, Commit: 5eb6be9) [14:00:09.537] Cloning completed: 848.163ms [14:00:16.357] Restored build cache [14:00:16.440] Running "vercel build" [14:00:16.921] Vercel CLI 33.2.0 [14:00:17.354] Installing dependencies... [14:00:20.506] [14:00:20.507] added 13 packages in 3s [14:00:20.507] [14:00:20.507] 41 packages are looking for funding [14:00:20.508] run `npm fund` for details [14:00:20.523] Detected Next.js version: 14.0.4 [14:00:20.530] Detected `package-lock.json` generated by npm 7+ [14:00:20.531] Running "npm run build" [14:00:21.646] [14:00:21.647] > sheria@0.1.0 build [14:00:21.647] > next build [14:00:21.647] [14:00:22.307] ▲ Next.js 14.0.4 [14:00:22.307] [14:00:22.308] Creating an optimized production build ... [14:00:32.610] ✓ Compiled successfully [14:00:32.611] Linting and checking validity of types ... [14:00:32.793] Collecting page data ... [14:00:35.092] Generating static pages (0/11) ... [14:00:35.304] Generating static pages (2/11) [14:00:35.690] Generating static pages (5/11) [14:00:35.717] [14:00:35.718] ⚠ metadata.metadataBase is not set for resolving social open graph or twitter images, using "https://sheria-9up6k2n27-dankamndi.vercel.app". See https://nextjs.org/docs/app/api-reference/functions/generate-metadata#metadatabase [14:00:36.208] Generating static pages (8/11) [14:00:36.392] ✓ Generating static pages (11/11) [14:00:36.616] Finalizing page optimization ... [14:00:36.617] Collecting build traces ... [14:00:43.527] RangeError: Maximum call stack size exceeded [14:00:43.528] at parse (/vercel/path0/node_modules/next/dist/compiled/micromatch/index.js:15:6313) [14:00:43.528] at picomatch.makeRe (/vercel/path0/node_modules/next/dist/compiled/micromatch/index.js:15:21670) [14:00:43.528] at picomatch (/vercel/path0/node_modules/next/dist/compiled/micromatch/index.js:15:19637) [14:00:43.528] at /vercel/path0/node_modules/next/dist/compiled/micromatch/index.js:15:19294 [14:00:43.529] at Array.map (<anonymous>) [14:00:43.529] at picomatch (/vercel/path0/node_modules/next/dist/compiled/micromatch/index.js:15:19286) [14:00:43.529] at micromatch.isMatch (/vercel/path0/node_modules/next/dist/compiled/micromatch/index.js:15:1090) [14:00:43.529] at /vercel/path0/node_modules/next/dist/build/collect-build-traces.js:245:48 [14:00:43.529] at shouldIgnore (/vercel/path0/node_modules/next/dist/build/collect-build-traces.js:75:9) [14:00:43.530] at /vercel/path0/node_modules/next/dist/build/collect-build-traces.js:86:23 [14:00:43.581] Error: Command "npm run build" exited with 1 [14:00:43.799]
原因排查与解决方法
1. 清理Vercel构建缓存
本地构建环境与Vercel缓存的依赖可能存在版本不一致,导致构建阶段调用栈溢出。
- 操作步骤:进入Vercel项目的「Settings」→「Build & Development Settings」,找到「Build Cache」选项,选择「Disable」后重新触发部署;也可以修改
package.json的build命令为"build": "rm -rf .next && next build"(适用于Linux/macOS),强制清理旧构建产物。
2. 检查自定义忽略规则
项目中next.config.js的experimental.outputFileTracingExcludes配置或.nextignore文件中的通配符规则写法错误,可能引发micromatch模块的无限递归。
- 操作步骤:检查
next.config.js中的outputFileTracingExcludes,移除或简化错误的通配符(例如避免**/**这类重复递归的写法);临时删除.nextignore文件测试是否能正常构建。
3. 升级/降级Next.js版本
Next.js 14.0.4的collect-build-traces模块存在已知bug,会导致micromatch调用栈溢出。
- 操作步骤:执行
npm install next@latest升级到最新稳定版,或npm install next@14.0.3降级到上一个小版本,更新依赖后重新部署。
内容的提问来源于stack exchange,提问作者Alvin.Kamau
相关产品推荐
相关产品推荐

