在使用 wrangler pages deploy 部署 Cloudflare Pages 專案時,可能出現以下假象:
0 files uploaded,文件並未真正上傳wrangler 會比較本地文件時間戳與雲端記錄。當本地文件自上次部署後無任何變更,wrangler 會判定「無需上傳」並直接返回,終端只顯示:
✨ Deployment complete!
✨ 0 files uploaded
✨ Built successfully
# 查詢最近 24 小時的部署記錄
npx wrangler pages deployment list --project-name=aiforall
重點關注:
Deployment ID(deployment hash)Created 時間Files uploaded 數量建立本地文件清單(含時間戳):
Get-ChildItem -Path "C:\path\to\project" -Filter "*.html" -Recurse |
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-1) } |
Select-Object FullName, LastWriteTime |
Sort-Object LastWriteTime -Descending
對比線上 deployment 的文件列表,檢查以下條件:
Files uploaded > 0若項目使用 memodata 管理導航入口,檢查:
memodata.html 中的 backups 區域是否包含所有最近部署的文件 IDdata/memodata.json 的 count 是否與備忘卡片數量一致tomemo-*.html 文件在 memodata 中缺失條目0 files uploaded# 檢查本地文件 vs 線上狀態
from datetime import datetime, timedelta
import os
local_dir = "C:\\path\\to\\project"
cutoff = datetime.now() - timedelta(hours=24)
for f in os.listdir(local_dir):
if f.endswith('.html'):
mtime = datetime.fromtimestamp(os.path.getmtime(f))
if mtime > cutoff:
print(f"最近修改: {f} ({mtime})")
# 方式一:touch 所有最近修改的文件
Get-ChildItem -Path "C:\path\to\project" -Filter "*.html" |
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-1) } |
ForEach-Object { $_.LastWriteTime = Get-Date }
# 方式二:只 touch index.html(wrangler 以此為觸發)
(Get-Item "index.html").LastWriteTime = Get-Date
npx wrangler pages deploy C:\path\to\project --project-name=your-project
⚠️ 驗證 Files uploaded 數量 必須 > 0
d71d8a7d.project.pages.dev)import subprocess
import json
from datetime import datetime, timedelta
def check_recent_deployments(project_name):
"""檢查最近部署是否有異常"""
result = subprocess.run(
['npx', 'wrangler', 'pages', 'deployment', 'list',
f'--project-name={project_name}', '--json'],
capture_output=True, text=True
)
deployments = json.loads(result.stdout)
for dep in deployments[:5]: # 最近的 5 個
created = datetime.fromisoformat(dep['created_on'].replace('Z', '+00:00'))
if datetime.now() - created < timedelta(hours=24):
if dep['files_count'] == 0:
print(f"⚠️ 異常部署:{dep['id']} - 0 files uploaded")
return False
return True
每次部署後自動執行:
memodata.html 的 backups 區域.html 文件是否在線| 項目 | 內容 |
|---|---|
| 專案 | aiforall |
| 問題 | wrangler deploy 返回「0 files uploaded」 |
| 根因 | 本地文件自上次部署後無變更,wrangler 跳過上傳 |
| 症狀 | 瀏覽器 404,但部署 API 回報成功 |
| 解決 | touch index.html 後重新部署 |
| 驗證 | deployment hash URL 可正常訪問 |
| 經驗 | 任何部署後立即檢查 files uploaded 數量 |
⚠️ 部署成功的假象:
✅ 無錯誤訊息
✅ "Deployment complete"
❌ 但 "0 files uploaded"
✅ 正確部署的標誌:
✅ "N files uploaded"(N > 0)
✅ deployment hash 生成
✅ 線上 URL 可訪問
✅ wrangler.toml 正確配置