[PR #89] Update index.ts #92

Closed
opened 2026-02-26 12:17:59 +03:00 by kerem · 0 comments
Owner

Original Pull Request: https://github.com/beilunyang/moemail/pull/89

State: closed
Merged: Yes


🐛 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
  • 影响功能:部署流程中的环境变量推送步骤
  • 向后兼容 完全兼容,不影响现有功能
**Original Pull Request:** https://github.com/beilunyang/moemail/pull/89 **State:** closed **Merged:** Yes --- ## 🐛 Bug Fix: 修复部署脚本中环境变量推送失败的问题 ### 📋 问题描述 在 CI/CD 部署过程中,`pushPagesSecret` 函数在推送环境变量到 Cloudflare Pages 时失败,报错: ``` ✘ [ERROR] The contents of ".env.runtime" is not valid JSON: "ParseError: ValueExpected" ``` **错误日志:** ```bash ❌ 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` 格式(键值对格式): ```bash # ❌ 原格式(不被接受) AUTH_GITHUB_ID=xxx AUTH_SECRET=yyy ``` 而 Wrangler 期望的格式是: ```json // ✅ 期望格式 { "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 数量和名称 ### 🧪 测试验证 - [x] 本地测试通过 - [x] CI/CD 部署成功 - [x] 环境变量正确推送到 Cloudflare Pages - [x] 临时文件正确清理 ### 📊 影响范围 - **影响文件**:`scripts/deploy/index.ts` - **影响功能**:部署流程中的环境变量推送步骤 - **向后兼容**:✅ 完全兼容,不影响现有功能
kerem 2026-02-26 12:17:59 +03:00
kerem changed title from [PR #89] [MERGED] Update index.ts to [PR #89] Update index.ts 2026-02-27 12:33:46 +03:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/moemail#92
No description provided.