升级@backstage/plugin-scaffolder-backend至1.15.0后ScmIntegrations类型不兼容问题
问题原因与解决方法
原因
这是依赖重复导致的类型冲突:你的项目根目录安装了@backstage/integration,而@backstage/backend-plugin-api作为@backstage/plugin-scaffolder-backend的依赖,又单独安装了一份路径不同的@backstage/integration。TypeScript对私有属性的类型校验严格,两个不同路径的ScmIntegrations类即便逻辑一致,也会被判定为不同类型,从而抛出私有属性byType声明不一致的错误。
解决步骤
1. 强制统一依赖版本
在项目根目录的package.json中添加配置,强制所有子依赖使用根目录安装的@backstage/integration版本:
- 若使用npm,添加
overrides字段:"overrides": { "@backstage/integration": "$@backstage/integration" } - 若使用yarn,添加
resolutions字段(替换为你根目录实际安装的版本号,比如1.14.0):"resolutions": { "@backstage/integration": "1.14.0" }
2. 清理依赖并重新安装
执行以下操作彻底清理旧依赖,确保新配置生效:
# 删除node_modules文件夹 rm -rf node_modules # 删除锁文件(二选一) rm package-lock.json # npm用户 rm yarn.lock # yarn用户 # 重新安装依赖 npm install # npm用户 yarn install # yarn用户
3. 同步相关依赖版本(可选但推荐)
升级@backstage/plugin-scaffolder-backend到1.15.0后,建议同步升级@backstage/integration到与之匹配的版本(可查看scaffolder-backend包的peerDependencies字段确认兼容版本),避免后续出现其他版本兼容问题。
内容的提问来源于stack exchange,提问作者Max Bojorquez
相关产品推荐
相关产品推荐

