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

Vercel部署Next.js多子域MDX应用时esbuild-linux-64包缺失如何解决

解决方案

问题根因

你的判断完全正确,报错是因为next-mdx-remote的serialize方法依赖esbuild做编译,而esbuild通过optionalDependencies适配不同平台的二进制包,Vercel部署环境为Linux x64架构,npm安装时默认跳过了该平台的可选依赖包esbuild-linux-64,导致运行时找不到对应二进制文件。

可行修复方案

按优先级推荐以下几种方案:

  • 方案1:修改Vercel安装命令
    进入Vercel项目控制台,找到「设置」-「构建与部署」-「安装命令」,将默认安装命令替换为强制包含可选依赖的命令:
    如果你用npm:npm install --include=optional
    如果你用yarn:yarn install --ignore-optional false
    如果你用pnpm:pnpm install --no-optional=false
    修改后重新触发部署即可生效。
  • 方案2:主动声明对应平台依赖
    在项目package.json的dependencies或optionalDependencies中手动添加esbuild-linux-64依赖,执行以下命令安装后重新提交代码部署:
    npm install esbuild-linux-64 --save
    
    该方案会强制安装Linux平台的esbuild二进制包,不受安装参数影响。
  • 方案3:更新锁文件
    删除本地项目的package-lock.json/yarn.lock/pnpm-lock.yaml锁文件,重新执行对应包管理工具的安装命令生成新的锁文件,新锁文件会包含所有平台的esbuild可选依赖信息,提交后部署到Vercel即可自动拉取对应平台的依赖包。

额外优化建议

如果后续需要进一步降低服务端运行开销,可以考虑将MDX序列化的逻辑从getServerSideProps移到发布内容的环节:用户点击发布时直接在前端序列化MDX,将序列化后的结果存储到Firestore,访问子域名时直接拉取预序列化的内容传递给MDXRemote渲染即可,完全规避服务端依赖esbuild的问题,还能提升页面访问速度。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:57:00