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

AWS Amplify部署Next.js应用后/pages/api路由报错ECONNREFUSED如何解决?

问题原因

AWS Amplify完全支持Next.js /pages/api 目录下的Serverless函数,你遇到的报错不是功能不支持导致的。

从报错日志可以看到请求的目标地址为 undefined/campaigns,说明你的 process.env.BASE_URL 变量在API路由的运行时环境中没有被正确读取,拼接后的请求地址无效,默认指向了本地 127.0.0.1:80 从而触发连接拒绝错误。


解决步骤

  • 第一步:检查Amplify控制台环境变量配置
    进入你的Amplify项目控制台,打开「环境变量」菜单,确认已添加BASE_URL、MAIL_SERVER_USERNAME、MAIL_SERVER_PASSWORD三个变量,且值填写正确,BASE_URL需要带完整的http/https协议前缀。
  • 注意:Next.js的非NEXT_PUBLIC_开头的环境变量,默认仅在构建阶段可被Amplify读取,运行时的Serverless函数(包括API路由)无法直接获取,需要额外配置导出。
  • 第二步:修改amplify.yml配置文件
    在项目根目录的amplify.yml中,build阶段的命令里新增将所需环境变量写入.env.production的步骤,参考配置如下:
version: 1
frontend:
  phases:
    preBuild:
      commands:
        - npm ci
    build:
      commands:
        # 将API路由需要的环境变量写入生产环境变量文件
        - env | grep -E "(BASE_URL|MAIL_SERVER_USERNAME|MAIL_SERVER_PASSWORD)" >> .env.production
        - npm run build
  artifacts:
    baseDirectory: .next
    files:
      - '**/*'
  cache:
    paths:
      - node_modules/**/*

Next.js运行时会自动加载.env.production文件中的变量,这样API路由就能正常读取到配置的值。

  • 第三步:重新部署项目
    修改配置后推送代码到仓库,或者在Amplify控制台手动触发一次部署,部署完成后再测试API路由即可。

额外优化建议

你当前的CORS配置仅允许POST请求,但API路由中同时处理了GET请求,建议把CORS初始化的methods参数修改为methods: ['GET', 'POST'],避免跨域拦截问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:24:02