Skip to content

Conversation

@sjcuhd
Copy link

@sjcuhd sjcuhd commented Dec 25, 2025

🐛 Bug Fix: 修复部署脚本中环境变量推送失败的问题

📋 问题描述

在 CI/CD 部署过程中,pushPagesSecret 函数在推送环境变量到 Cloudflare Pages 时失败,报错:

✘ [ERROR] The contents of ".env.runtime" is not valid JSON: "ParseError: ValueExpected"

错误日志:

❌ Failed to push secrets: Error: Command failed: pnpm dlx wrangler pages secret bulk /home/runner/work/***/.env.runtime

🔍 根本原因

wrangler pages secret bulk 命令要求输入文件必须是有效的 JSON 格式,但原代码生成的 .env.runtime 文件是标准的 .env 格式(键值对格式):

# ❌ 原格式(不被接受)
AUTH_GITHUB_ID=xxx
AUTH_SECRET=yyy

而 Wrangler 期望的格式是:

// ✅ 期望格式
{
  "AUTH_GITHUB_ID": "xxx",
  "AUTH_SECRET": "yyy"
}

✨ 解决方案

修改 scripts/deploy/index.ts 中的 pushPagesSecret 函数:

  1. 格式转换:将 .env 格式的环境变量解析为 JavaScript 对象,然后使用 JSON.stringify() 转换为 JSON 格式
  2. 文件命名优化:临时文件从 .env.runtime 改为 .env.runtime.json,更清晰地表明文件格式
  3. 改进解析逻辑:使用 indexOf('=') 替代 split('='),正确处理值中包含 = 的情况
  4. 增强错误处理:在 catch 块中也确保清理临时文件
  5. 添加日志输出:显示找到的 secrets 数量和名称

🧪 测试验证

  • 本地测试通过
  • CI/CD 部署成功
  • 环境变量正确推送到 Cloudflare Pages
  • 临时文件正确清理

📊 影响范围

  • 影响文件scripts/deploy/index.ts
  • 影响功能:部署流程中的环境变量推送步骤
  • 向后兼容:✅ 完全兼容,不影响现有功能

 修复pushPagesSecre为json
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant