Comfy-Org/ComfyUI · error · ValueError
dist.zip not found in the release assets
Error message
dist.zip not found in the release assets
What it means
download_release_asset_zip iterates the 'assets' array of a GitHub release object looking for one named exactly 'dist.zip' (the bundled frontend build). If the release exists but has no dist.zip asset — or the cached release dict has an empty/missing assets list — it raises ValueError before attempting any download.
Source
Thrown at app/frontend_management.py:184
elif version == "prerelease":
return self.latest_prerelease
else:
for release in self.all_releases:
if release["tag_name"] in [version, f"v{version}"]:
return release
raise ValueError(f"Version {version} not found in releases")
def download_release_asset_zip(release: Release, destination_path: str) -> None:
"""Download dist.zip from github release."""
asset_url = None
for asset in release.get("assets", []):
if asset["name"] == "dist.zip":
asset_url = asset["url"]
break
if not asset_url:
raise ValueError("dist.zip not found in the release assets")
# Use a temporary file to download the zip content
with tempfile.TemporaryFile() as tmp_file:
headers = {"Accept": "application/octet-stream"}
response = requests.get(
asset_url, headers=headers, allow_redirects=True, timeout=REQUEST_TIMEOUT
)
response.raise_for_status() # Ensure we got a successful response
# Write the content to the temporary file
tmp_file.write(response.content)
# Go back to the beginning of the temporary file
tmp_file.seek(0)
# Extract the zip file content to the destination path
with zipfile.ZipFile(tmp_file, "r") as zip_ref:
zip_ref.extractall(destination_path)View on GitHub (pinned to 1c6d8d45b3)
Solutions
- Retry after a few minutes — assets are sometimes uploaded shortly after the release appears.
- Choose an adjacent older release tag known to include dist.zip.
- Verify the release on GitHub actually has dist.zip attached; if not, report/switch to one that does.
- Check GitHub API rate limits if the assets list looks empty.
Defensive patterns
Strategy: validation
Validate before calling
asset_names = [a["name"] for a in release.get("assets", [])]
if "dist.zip" not in asset_names:
raise SystemExit("release has no dist.zip asset; pick another version") Type guard
def release_has_dist_zip(release: dict) -> bool:
return any(a.get("name") == "dist.zip" for a in release.get("assets", [])) Try / catch
try:
download_release_asset_zip(release, dest)
except ValueError as e:
if "dist.zip" in str(e):
release = fm.get_release("latest") # fallback release
download_release_asset_zip(release, dest)
else:
raise Prevention
- Check the assets list of the release object before downloading.
- Retry shortly after a fresh release is published.
When it happens
Trigger: Requesting a frontend version whose GitHub release was published without the dist.zip artifact (e.g. a draft, a source-only tag, or an asset still uploading); using a manually constructed Release dict from get_release('latest') when asset upload was delayed.
Common situations: Hitting a release seconds after publication before assets finished uploading; upstream publishing a release with a differently named artifact; GitHub returning a pruned asset list under rate limiting.
Related errors
- No pre-releases found
- hash of {path} (url: {url}) failed to validate
- Failed to download layer {i + 1} of {len(specs)} (name={item
- Unable to connect to the network. Please check your internet
- The remote service appears unreachable at this time.
AI-assisted analysis of Comfy-Org/ComfyUI@1c6d8d45b3 (2026-08-14).
Data as JSON: /api/errors/0eb4be3782ce40a0.
Report an issue: GitHub.