Swift Package引用其他自定义Swift包时出现Module Not Found报错如何解决
Swift Package跨包依赖Module Not Found解决方案
- 关联依赖到指定Target
你当前仅在包全局的dependencies中声明了依赖规则,没有将依赖关联到需要使用它的编译Target上,这是最常见的报错原因。
需要修改SwiftUI包的Package.swift中的targets配置,示例如下:
原错误配置参考:
targets: [ .target( name: "你的SwiftUI包名", dependencies: []), ]
修改后的正确配置:
targets: [ .target( name: "你的SwiftUI包名", dependencies: [.product(name: "myswiftpackage", package: "myswiftpackage")]), ]
其中name参数填基础包对外暴露的产品名,package参数必须和全局依赖中声明的包名完全一致。
- 检查基础包的公开配置
- 基础包的
Package.swift中,需要将对外暴露的模块加入products列表,示例配置:
products: [ .library( name: "myswiftpackage", targets: ["myswiftpackage"]), ]- 基础包中需要被外部调用的类、方法、属性必须声明为
public/open访问级别,默认的internal级别仅允许同模块内访问。
- 基础包的
- 验证依赖版本有效性
确认GitHub上的myswiftpackage仓库确实存在1.0.1及以上的正式版本tag。如果基础包有本地修改未推送打tag,可以临时将依赖规则改为.package(url: "https://github.com/myorg/myswiftpackage", branch: "main")先验证配置逻辑是否正常。 - 清理缓存重试
配置修改完成后如果仍报错,在Xcode中执行File > Packages > Reset Package Caches清理旧的依赖缓存,重新拉取依赖后再编译。
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

