通过Github Actions部署NextJS至Github Pages后,POST /generate接口返回405
问题分析与解决思路
核心原因
Github Pages是纯静态站点托管服务,不支持运行Node.js后端代码。NextJS的/api目录下的接口属于服务器端路由(API Routes),这类代码需要Node.js环境执行,因此部署到Github Pages后,这些接口无法被正常处理,从而返回405错误。
解决思路
- 更换托管平台(推荐):
使用Vercel(NextJS官方托管平台)、Netlify等支持Serverless函数的平台部署整个项目。这些平台原生支持NextJS的API路由,部署时直接关联Github仓库即可,环境变量可在平台控制台配置,能完美复现本地运行的效果。 - 迁移API路由到Serverless服务:
将/api/generate的逻辑迁移到AWS Lambda、Cloudflare Workers等Serverless服务,前端仍部署在Github Pages,修改前端代码中调用API的地址为新的Serverless接口地址。 - 谨慎使用前端直接调用方式:
若要在前端直接调用OpenAI API,必须注意密钥泄露风险——需在OpenAI控制台设置密钥的域名白名单限制,或通过自建反向代理隐藏密钥。此方式仅适合测试场景,生产环境不推荐。 - 检查部署脚本配置:
查看Github Actions的部署脚本,若使用了next export命令,该命令会生成纯静态文件,会忽略所有API路由。需替换为支持Serverless部署的命令,或切换到Vercel的部署Action。
内容的提问来源于stack exchange,提问作者rafazzevedo
相关产品推荐
相关产品推荐

