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

部署Redwood应用到Vercel后出现405 Method Not Allowed错误求助

排查Redwood+Supabase+Prisma应用Vercel部署后405 Method Not Allowed错误的思路

1. 补全vercel.json路由配置

Redwood部署到Vercel需要重写后端函数路由,否则静态资源路由会拦截API请求,导致405错误。创建项目根目录的vercel.json文件,写入以下配置:

{
  "rewrites": [
    { "source": "/.redwood/functions/:function(*)", "destination": "/api/:function(*)" },
    { "source": "/(.*)", "destination": "/index.html" }
  ]
}

这个配置会把Redwood默认的后端函数路径/.redwood/functions/*重定向到Vercel的API路径/api/*,同时把所有前端路由指向index.html,保证单页应用路由正常。

2. 检查Supabase的跨域与密钥配置

  • CORS权限:登录Supabase控制台,进入项目的「API」设置,在「Allowed Origins」中添加Vercel部署域名(如https://your-app.vercel.app),允许跨域请求。
  • 密钥正确性:确认Vercel环境变量中配置的Supabase密钥(SUPABASE_SERVICE_ROLE_KEY用于后端,SUPABASE_ANON_KEY用于前端)和Supabase控制台提供的一致,避免密钥错误导致请求被拦截。

3. 验证Prisma数据库连接

  • 检查Vercel环境变量中的DATABASE_URL是否为Supabase提供的Postgres连接字符串,需包含正确的用户名、密码、数据库名和端口。
  • 查看Vercel部署日志,搜索「Prisma」相关条目,确认是否存在数据库连接失败、认证错误等信息,这类问题会间接导致API请求返回405。

4. 核对API请求方法与后端函数匹配

  • 确认前端发起的请求HTTP方法(GET/POST/PUT等)和Redwood后端函数定义的方法一致。比如后端函数仅处理GET请求,前端发送POST就会触发405。
  • 检查api/src/functions下的函数代码,确保handler函数没有错误的方法限制逻辑,比如:
export const handler = async (event) => {
  // 错误示例:仅允许GET,但前端发了POST
  if (event.httpMethod !== 'GET') {
    return { statusCode: 405, body: 'Method Not Allowed' };
  }
  // 业务逻辑代码
};

5. 查看Vercel函数日志定位问题

进入Vercel项目控制台的「Functions」页面,找到对应的Redwood函数,查看请求详情日志,包括请求路径、HTTP方法、返回状态码及错误信息,这是最直接的问题定位方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 12:17:50