cf从github仓库部署报错解决,指定静态文件所在文件夹

19 次阅读

本文最后更新于 2026年5月22日。

构建过程失败
Pasted image 20260323181857.png

错误日志


2026-03-23T10:04:35.500Z	
2026-03-23T10:04:35.502Z	✘ [ERROR] Asset too large.
2026-03-23T10:04:35.502Z	
2026-03-23T10:04:35.502Z	  Cloudflare Workers supports assets with sizes of up to 25 MiB. We found a file /opt/buildhome/repo/.git/objects/pack/pack-d24c9ca86579b483413c8b8665a2a15288504afe.pack with a size of 111 MiB.
2026-03-23T10:04:35.502Z	  Ensure all assets in your assets directory "/opt/buildhome/repo" conform with the Workers maximum size requirement.
2026-03-23T10:04:35.502Z	
2026-03-23T10:04:35.502Z	
2026-03-23T10:04:35.528Z	🪵  Logs were written to "/opt/buildhome/.config/.wrangler/logs/wrangler-2026-03-23_10-04-32_877.log"
2026-03-23T10:04:35.648Z	Failed: error occurred while running deploy command

这个问题很清晰,报错的核心原因是:Cloudflare Workers 试图将你的整个代码仓库(包括巨大的 Git 历史记录)作为静态资源上传,而其中一个 Git 缓存文件超过了 25 MiB 的限制。

🔍 根本原因分析

  1. 错误的资产目录:日志显示 Output Directory: .。这意味着 Wrangler 把当前根目录下的所有文件都当作要发布的网页资源。

  2. 包含隐藏文件:Cloudflare 扫描到了 .git 文件夹(Git 的版本历史)。

  3. 文件超限.git/objects/pack/... 这个文件高达 111 MiB,远超 Workers 单个文件 25 MiB 的限制。


🛠️ 解决方案

你需要告诉 Cloudflare 哪些才是真正需要部署的文件,并避开 .git 文件夹。

方法 A:修改 Cloudflare Pages/Workers 仪表板配置(推荐)

如果你是在 Cloudflare 后台配置的 GitHub 自动部署,请检查以下设置:

  • 构建命令 (Build command):如果你的项目有构建步骤(如 npm run build),请确保填写。如果没有,可以保持为空或填入 exit 0

  • 构建输出目录 (Build output directory)这是关键。 * 如果你的项目是纯静态 HTML,且所有文件都在根目录,请确保排除 .git

    • 更好的做法是:将需要发布的文件放在一个子目录(如 publicdist),然后将此项设置为该目录名。

把静态文件都放入public文件夹
然后构建目录不选择根目录,选择public目录就可以了
Pasted image 20260323182445.png

方法 B:创建/修改 wrangler.jsonc (或 wrangler.toml)

在你的 GitHub 仓库根目录下添加或修改配置文件,手动指定资产路径:

Code snippet

{
  "name": "ainia-love",
  "compatibility_date": "2025-09-27",
  "assets": {
    // 不要指向 ".",指向你真正的存放网页文件的文件夹
    // 比如 "public"、"dist" 或者 "web"
    "directory": "./dist" 
  },
  "compatibility_flags": [
    "nodejs_compat"
  ]
}

方法 C:使用 .ignore 文件

如果非要部署根目录(.),请在根目录创建一个 .wranglerignore 文件(如果 Wrangler 版本支持)或者确保 .gitignore 包含了所有非必要文件。

但在 Cloudflare Pages/Workers Assets 模式下,最彻底的方法是不要将整个项目根目录设为 Assets Directory


💡 建议步骤

  1. 整理文件:在你的仓库里建一个文件夹(例如 public),把你的 index.html 和图片等放进去。

  2. 修改设置:在 Cloudflare 仪表板的项目设置里,将 Output directory 改为 public

  3. 重新推送:提交代码到 GitHub,Cloudflare 会自动重新触发部署。