You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac zsh创建SolidJS报zlib: unexpected end of file怎么办

报错核心诱因

! zlib: unexpected end of file 本质是zlib解压压缩包时,拿到的文件不完整、被截断触发的解压失败,在Mac + zsh环境下执行degit命令时的常见触发原因有三类:

  • degit本地缓存、npm缓存中留存了之前网络波动时下载的残缺模板压缩包,每次执行命令优先读取缓存里的坏包,导致持续报错
  • 终端网络请求被代理、防火墙拦截篡改,gzip压缩的响应内容被截断,degit拿到的源文件本身就是损坏的
  • 本地npx/degit版本过旧、node版本低于16,或者npm缓存目录权限异常,导致下载压缩包时写入不完整就提前触发了解压流程
分步排查解决

按从易到难顺序操作,每步做完可以重试degit solidjs/templates/js my-app验证效果:

  1. 清理所有损坏缓存
    先删除degit本地模板缓存,再强制清空npm缓存,避免读取旧的损坏包:
    rm -rf ~/.degit
    npm cache clean --force
    
    不要直接用npx拉起临时版本的degit,先全局安装最新稳定版,避免npx拉到存在兼容bug的旧版degit:
    npm install -g degit@latest
    
  2. 排查网络拦截问题
    • 如果当前开了终端代理、网络抓包工具,先临时关闭重试;如果必须走代理,确认代理的HTTP/HTTPS环境变量配置正确,没有请求半连接中断的问题
    • 可以尝试拉取其他公开模板验证故障范围,比如执行degit sveltejs/template test-demo,如果同样报zlib错误,可确定是本地网络/缓存问题,和SolidJS模板本身无关
  3. 修复环境与权限问题
    • 执行node -v确认本地node版本≥16.x,版本过低的话升级到长期支持版即可
    • 执行以下命令修复npm缓存目录的用户权限,避免权限不足导致包写入截断:
      sudo chown -R $(whoami) ~/.npm
      
    • 执行which degit确认调用的是全局安装的最新版degit,排除zsh别名、旧版本软链接的干扰
  4. 兜底替代方案
    如果以上步骤都无法解决,可以直接跳过degit,用git拉取模板源码,最终效果和degit拉取完全一致:
    git clone https://github.com/solidjs/templates.git solid-temp
    cp -r solid-temp/js my-app
    rm -rf solid-temp my-app/.git
    cd my-app && npm install
    

内容的提问来源于stack exchange,提问作者Sammy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 23:51:30