[API Error: 生成数据错误: fetch failed:certificate is not yet valid]

你可以尝试一下,我让iflow给的解决方案:根本原因

Mac 用户的问题可能是:

  • 时区配置不一致:系统时区与 Node.js 运行时时区不一致
  • 环境变量 TZ 设置:可能设置了错误的 TZ 环境变量
  • Node.js 时区解析问题:Node.js 可能使用了不同的时区数据库

解决方案

请让 Mac 用户执行以下诊断和修复步骤:

  1. 诊断命令

检查系统时间和时区

date
date -u

检查时区设置

echo $TZ
ls -la /etc/localtime

检查 Node.js 中的时间

node -e “console.log(‘Node.js Date:’, new Date()); console.log(‘Node.js TZ:’, process.env.TZ);”

检查 iFlow 中的时间

node -e “console.log(‘System Date:’, new Date().toString()); console.log(‘ISO:’, new
Date().toISOString()); console.log(‘Timezone Offset:’, new Date().getTimezoneOffset());”

  1. 修复方案

方案 A:清除 TZ 环境变量(推荐)

临时清除

unset TZ

永久清除(添加到 ~/.zshrc 或 ~/.bash_profile)

echo “unset TZ” >> ~/.zshrc
source ~/.zshrc

重新运行 iFlow

iflow

方案 B:设置正确的时区

检查当前系统时区

sudo systemsetup -gettimezone

设置为正确的时区(例如上海)

export TZ=‘Asia/Shanghai’

或者使用系统默认时区

export TZ=$(readlink /etc/localtime | sed ‘s#/var/db/timezone/zoneinfo/##’)

添加到配置文件

echo “export TZ=‘Asia/Shanghai’” >> ~/.zshrc
source ~/.zshrc

方案 C:重新链接系统时区文件

检查时区链接

ls -la /etc/localtime

如果需要,重新设置时区(通过系统偏好设置)

macOS: 系统偏好设置 → 日期与时间 → 时区

或使用命令行(需要管理员权限)

sudo systemsetup -settimezone “Asia/Shanghai”

  1. 验证修复

验证系统时间

date

验证 Node.js 时间

node -e “console.log(new Date())”

验证 iFlow

iflow --version
iflow

  1. 如果问题仍然存在

如果以上方法都不能解决问题,可能需要检查:

检查 NTP 同步状态

sudo sntp -sS time.apple.com

检查系统完整性

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate

重启时间服务

sudo killall -HUP mDNSResponder

  1. 临时绕过 SSL 验证(不推荐,仅用于测试)

警告:这会降低安全性,仅用于诊断问题

临时禁用 SSL 验证

export NODE_TLS_REJECT_UNAUTHORIZED=0

运行 iFlow

iflow

使用后立即清除

unset NODE_TLS_REJECT_UNAUTHORIZED

总结

Mac 用户的问题很可能是时区配置问题,而不是系统时间本身的问题。最常见的原因是:

  1. 错误的 TZ 环境变量设置
  2. 系统时区与 Node.js 运行时时区不一致
  3. /etc/localtime 链接损坏

✦ 建议先尝试方案 A(清除 TZ 环境变量),这是最简单且最有效的解决方案。