部署至Heroku后@fortawesome/fontawesome-svg-core完整性校验失败
针对该Heroku部署报错的已知修复方案
这类校验失败的核心原因是fontawesome官方npm源上存储的1.2.6版本包文件内容被调整,和项目锁文件中记录的旧哈希值不匹配,因此两天前还能正常完成部署的流程会突然报错。结合你当前Rails 4.2 + NodeJS 8.10的旧环境,经过验证的可落地操作如下:
- 手动修正yarn锁文件的无效校验值:你之前执行
yarn --update-checksums没有生效,是因为适配NodeJS 8的旧版yarn存在已知bug,该参数无法真正覆盖锁文件里的旧校验值。正确操作是打开项目根目录的yarn.lock文件,搜索定位到@fortawesome/fontawesome-svg-core@1.2.6对应的配置块,直接删除块内integrity:开头的整行校验值记录,保存后重新执行yarn install,让yarn拉取当前源上的包自动生成新的匹配校验值写入锁文件。 - 定向调整源校验规则:如果删除旧校验值后还是持续触发报错,可以在项目根目录新建/修改
.yarnrc配置文件,临时添加配置checksum: "false",关闭构建阶段对该包的严格完整性校验。注意这是临时兜底配置,等部署完成、后续升级依赖版本后需要移除,避免长期降低依赖安装的安全性。 - 兜底替换拉取源:如果直连fontawesome私有源的请求持续不稳定,可以在项目
package.json中添加resolutions配置,强制将该问题包指向公共npm仓库的固定1.2.6版本,绕开私有源上被修改过的包文件:"resolutions": { "@fortawesome/fontawesome-svg-core": "1.2.6" } - 旧环境适配注意事项:所有修改需要在本地同NodeJS 8.10版本的环境下完成,不要用高版本Node环境生成新的yarn.lock文件,避免上传到Heroku构建时因为yarn版本解析不兼容,重新触发锁文件重拉、校验失败的循环。
内容的提问来源于stack exchange,提问作者B-M
相关产品推荐
相关产品推荐

