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

Vercel部署Next.js生成静态页面时遇useMemo相关错误求助

Vercel部署Next.js项目的构建错误排查建议

遇到的构建错误

> Build error occurred
Error: Export encountered errors on following paths:

/
/: /en
/: /pl
/_error: /404
/_error: /500
/_error: /en/404
/_error: /en/500
/_error: /pl/404
/_error: /pl/500
/listing/[slugId]: /pl/listing/1
/listing/[slugId]: /pl/listing/10
/listing/[slugId]: /pl/listing/100
/listing/[slugId]: /pl/listing/11
/listing/[slugId]: /pl/listing/12

具体错误栈

TypeError: Cannot read properties of null (reading 'useMemo')
    at exports.useMemo (/vercel/path0/node_modules/.pnpm/react@18.2.0/node_modules/react/cjs/react.production.min.js:25:208)
    at Object.useDehydratedState (file:///vercel/path0/node_modules/.pnpm/@trpc+react-query@10.0.0-rc.3_y6yjugiwomqyvbrpc2lz4flpyi/node_modules/@trpc/react-query/dist/createHooksInternal-92c57b9a.mjs:379:29)
    at WithTRPC (/vercel/path0/.next/server/chunks/834.js:988:40)
    at Yd (/vercel/path0/node_modules/.pnpm/next@13.0.2-canary.2_mk5yftg2men2cn3ayx4t7ddtvy/node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js:98:272)

项目现状

  • 本地与Vercel预览环境的.env变量完全一致
  • 本地构建无任何错误
  • 所有页面均放置在/pages目录下
  • /listing类静态页面的fallback设置为false
  • 所有依赖已更新至最新版本(包括next@13)

解决思路

  1. 调整TRPC版本
    错误源于@trpc/react-query@10.0.0-rc.3的useDehydratedState调用useMemo时触发异常。RC版本稳定性不足,建议降级到TRPC 9.x稳定版,或升级到TRPC 10的正式发布版(若已推出),避免使用候选版本。

  2. 校验静态生成的TRPC数据预取逻辑
    针对静态页面构建场景,检查getStaticProps中TRPC数据预取后的脱水(dehydrate)流程是否正确。确保服务端预取的数据能完整传递给客户端组件,防止静态生成过程中React Hook调用环境异常。

  3. 适配多语言路由的TRPC配置
    错误涉及多语言路径(/en、/pl),确认TRPC客户端在不同语言路由下的初始化逻辑是否正常,避免因路由上下文缺失导致Hook调用时React环境为null。

  4. 临时关闭React Strict Mode排查
    在next.config.js中关闭React Strict Mode,验证是否是严格模式下的双重渲染导致TRPC脱水状态异常:

    module.exports = {
      reactStrictMode: false,
    };
    

    注意:此为临时排查手段,不建议长期关闭。

  5. 统一Vercel与本地的依赖安装环境
    本地构建正常但Vercel失败,可能是包管理器或依赖版本差异。在package.json中添加"packageManager": "pnpm@<你的本地版本>",强制Vercel使用与本地一致的pnpm版本,避免依赖安装不一致。

  6. 检查页面的TRPC Provider包裹逻辑
    确保/pages下所有页面都被正确的TRPC Provider包裹,且Provider在服务端渲染时能正常初始化,防止静态生成时因Provider未挂载导致Hook调用环境异常。


内容的提问来源于stack exchange,提问作者Łukasz Samulnik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:10:38