谷歌浏览器提示扩展“已损坏”通常非真损坏,而是校验失败:先确认是否因非商店来源被停用;再检查manifest.json无bom头、manifest_version正确、路径存在且大小写一致;禁用文件夹压缩属性;解压后以纯英文路径加载根目录;删除或重命名_metadata文件夹;最后清除缓存并重启进程。

谷歌浏览器无法加载扩展程序并提示“已损坏”,通常发生在手动安装本地插件、解压CRX文件后直接拖入、或开发调试阶段,本质是Chrome校验失败而非文件真被破坏——它拒绝加载,但你手里的代码其实完好无损。
先确认是不是真损坏
打开 chrome://extensions 页面,找到报错的扩展,看右上角是否显示“已停用”或“已损坏”。如果状态栏写着“【已停用(非Chrome网上应用店)】”,那根本不是损坏,只是浏览器默认拦住了非商店来源;此时直接点开关启用即可,无需任何修复操作。
若显示“此扩展程序可能已损坏”,且旁边没有括号说明,则进入下一步排查。
检查 manifest.json 是否合法
这一步必须做,90%的“已损坏”提示源于清单文件格式错误。
用记事本或VS Code打开扩展根目录下的 manifest.json 文件。
确认第一行【不能有UTF-8 BOM头】:BOM头会导致Chrome解析失败却只报“损坏”,用编辑器另存为“UTF-8 无BOM”格式即可解决。
检查 manifest_version 字段值是否为 3(推荐)或 2(旧版兼容);若写成 "3.0" 或 4,Chrome会直接拒载。
逐行核对所有 paths(如 content_scripts → js、background → service_worker、icons → 16.png 等)是否真实存在,大小写必须完全一致——Windows不区分大小写,但Chrome加载时严格区分。
禁用文件夹压缩属性
Windows资源管理器对扩展文件夹启用“压缩内容以节省磁盘空间”后,ZIP打包会混入不可见元数据,Chrome解压校验时判定为篡改,强制报损。
右键扩展所在文件夹 → 属性 → 高级 → 取消勾选“压缩内容以节省磁盘空间” → 点击“确定” → 再点“应用” → 选择“将更改应用于此文件夹、子文件夹和文件”。
做完这步必须重新打包:用7-Zip或系统自带压缩功能,选中文件夹内全部内容(不是文件夹本身),压缩为 ZIP,确保压缩包里最外层就是 manifest.json,没有多一层父目录。
用正确方式加载已解压扩展
这是最常被跳过的致命步骤:Chrome不允许拖ZIP或CRX文件进 extensions 页面,也不接受选中ZIP文件点击“加载已解压的扩展程序”。
第一步:把 .crx 文件重命名为 .zip → 用7-Zip完整解压到一个纯英文路径下,例如 C:\myext\。
第二步:地址栏输入 chrome://extensions/ → 开启右上角“开发者模式” → 点击“加载已解压的扩展程序”按钮。
第三步:【必须直接选中 C:\myext 这个文件夹,而不是其中的某个文件,也不是 C:\myext.zip】 ——选错就必然报损。
处理 _metadata 文件夹冲突
Chrome 130+ 版本起,禁止加载含下划线开头的系统保留目录名。部分扩展解压后自动生成 _metadata 文件夹,触发 “Cannot load extension with file or directory name _metadata” 错误,但界面仍显示“可能已损坏”。
进入你解压出的扩展根目录 → 查找名为 _metadata 的子文件夹 → 将其重命名为 metadata(仅删掉开头下划线,其余字母大小写不变)。
回到 chrome://extensions/ 页面 → 找到该扩展 → 点击右上角“重新加载”图标 → 若仍失败,先移除再重新执行“加载已解压的扩展程序”。
清除扩展缓存并重启进程
Chrome 会缓存扩展的哈希值与加载元数据,之前加载失败留下的残缺记录会污染后续尝试。
关闭 Chrome 所有窗口 → 按 Ctrl+Shift+Esc 打开任务管理器 → 在“进程”页签下找到所有 chrome.exe → 全部右键“结束任务”。
重新打开 Chrome → 地址栏输入 chrome://settings/clearBrowserData → 时间范围选“所有时间” → 勾选“Cookie及其他网站数据”和“缓存的图片和文件” → 点击“清除数据”。
完成后,不再重启浏览器,而是直接访问 chrome://extensions/ → 重新执行“加载已解压的扩展程序”流程。











