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

如何通过GitHub Actions正确配置Next.js服务端运行时变量

问题分析

你遇到的核心问题是:服务端运行时环境变量未被Vercel部署环境加载。带NEXT_PUBLIC_前缀的变量会在构建时注入客户端代码,所以build步骤的env配置能生效;但像NEXT_RESEND_API这类服务端变量是在运行时读取的,仅在build阶段设置env无法让Vercel的运行环境感知到,必须将这些变量同步到Vercel的对应部署环境中。

解决方案

修改你的GitHub Actions配置,在拉取Vercel环境信息前,通过Vercel CLI将服务端变量设置到Vercel预览环境中,确保后续构建和部署步骤能正确读取这些变量。

修改后的完整配置如下:

name: Jest tests
env:
  VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
  VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
on: push
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: 安装依赖
        run: yarn install
      - name: 执行Jest测试
        run: yarn test
      - name: 安装Vercel CLI
        run: yarn global add vercel@latest
      - name: 将服务端变量同步到Vercel预览环境
        run: |
          vercel env set NEXT_RESEND_API "${{ vars.NEXT_RESEND_API }}" preview --token=${{ secrets.VERCEL_TOKEN }}
          vercel env set NEXT_PRIVATE_PAYPAL_KEY "${{ vars.NEXT_PRIVATE_PAYPAL_KEY }}" preview --token=${{ secrets.VERCEL_TOKEN }}
      - name: 拉取Vercel环境信息
        run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }}
      - name: 构建项目产物
        run: vercel build --token=${{ secrets.VERCEL_TOKEN }}
        env:
          NEXT_PUBLIC_MAPS_API: ${{ vars.NEXT_PUBLIC_MAPS_API }}
          NEXT_PUBLIC_PAYPAL_CLIENT_ID: ${{ vars.NEXT_PUBLIC_PAYPAL_CLIENT_ID }}
      - name: 部署项目产物到Vercel
        run: vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }}
关键说明
  1. 新增变量同步步骤:通过vercel env set命令将服务端变量直接写入Vercel预览环境,确保Vercel运行时能读取到这些变量。
  2. 保留PUBLIC变量的build阶段配置:这类变量需要在构建时注入客户端代码,所以仍在build步骤的env中设置。
  3. 环境一致性:同步变量后执行vercel pull,让本地构建环境和Vercel部署环境的变量保持一致,避免构建与运行时的变量差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 16:14:55