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

Docker自托管Supabase在React项目中API请求无密钥错误排查

解决自托管Supabase "No API key found in request" 错误

1. 确认端口映射与网络可达性

  • 检查docker-compose.yml中supabase-api服务的端口映射是否正确,确保外部8080端口映射到容器内的8000端口:
    ports:
      - "8080:8000"
    
  • 验证服务器防火墙/安全组已开放8080端口,同时测试本地能通过http://anthonyx82.ddns.net:8080/rest/v1/访问到Supabase API的说明页面,确认网络可达。

2. 验证ANON_KEY的正确性与前端加载

  • 确认Supabase .env文件中的ANON_KEY、SECRET_KEY和JWT_SECRET完全匹配生成密钥时的参数,修改.env后必须重启Docker容器使配置生效:
    docker-compose down -v
    docker-compose up -d
    
  • 检查React项目的.env.local是否放在项目根目录,变量名严格以REACT_APP_开头,且重启React开发服务使其生效。可在client.js中临时打印密钥确认加载情况:
    import { createClient } from '@supabase/supabase-js'
    
    const supabaseUrl = process.env.REACT_APP_SUPABASE_URL
    const supabaseAnonKey = process.env.REACT_APP_ANON_KEY
    
    console.log('Loaded Anon Key:', supabaseAnonKey) // 确认输出正确的密钥内容
    export const supabase = createClient(supabaseUrl, supabaseAnonKey)
    

3. 服务端配置验证

  • 进入Supabase API容器,检查环境变量是否正确加载:
    docker exec -it supabase-api env | grep ANON_KEY
    
    确保输出的密钥与你设置的一致。
  • 用curl直接调用API端点,排除前端代码问题:
    curl -X POST http://anthonyx82.ddns.net:8080/auth/v1/signin/otp \
      -H "apikey: YOUR_ANON_KEY" \
      -H "Content-Type: application/json" \
      -d '{"email":"your-test-email@example.com"}'
    
    如果仍返回"No API key found in request",说明问题出在Supabase服务端,可尝试重新生成密钥并替换.env文件后再次重启容器。

4. 检查CORS配置

  • 确认Supabase .env中的CORS_ALLOWED_ORIGINS包含你的React应用地址(比如http://localhost:3000或线上域名),格式为逗号分隔的列表:
    CORS_ALLOWED_ORIGINS=http://localhost:3000,https://your-app-domain.com
    
    修改后重启Docker容器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 12:05:32