如何部署调用API Routes的Next.js应用 解决Vercel部署数据请求失败问题
Next.js 部署 Vercel 后 API Routes 请求失败解决方案
- 最优方案:使用相对路径调用接口
同域名下调用自身的 API Routes 无需填写完整域名,直接写相对路径即可,本地开发和 Vercel 部署环境会自动适配当前域名,示例写法:fetch('/api/your-endpoint')
这是最推荐的方案,不需要额外配置任何环境变量,可自动适配所有部署环境 - 方案二:使用 Vercel 内置环境变量拼接绝对路径
如果你的业务场景必须使用绝对路径发起请求,可以直接用 Vercel 默认提供的系统环境变量VERCEL_URL,无需手动配置:- 服务端逻辑(服务端组件、
getServerSideProps、API Routes 内部调用等)直接使用即可,注意VERCEL_URL返回值不带https协议,需要手动拼接:fetch(https://${process.env.VERCEL_URL}/api/your-endpoint) - 客户端组件调用需要给环境变量添加
NEXT_PUBLIC_前缀,你可以在 Vercel 项目的环境变量配置页新增变量NEXT_PUBLIC_APP_URL,值填写https://${VERCEL_URL},重新部署后即可在客户端代码中使用:fetch(${process.env.NEXT_PUBLIC_APP_URL}/api/your-endpoint)
- 服务端逻辑(服务端组件、
- 方案三:手动配置域名到环境变量
你可以在 Vercel 项目的「Settings - Domains」页面查到平台分配的默认部署域名,或者你绑定的自定义域名,将域名填写到项目环境变量中,代码中统一调用环境变量取值即可,避免硬编码域名导致多环境适配问题。
内容的提问来源于stack exchange,提问作者Naim Islam Antor
相关产品推荐
相关产品推荐

