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

Swift新手求助:可执行项目调用库提示‘no such module’错误

解决Swift Package中"no such module 'Bar'"的问题

Hey there! As someone who's stumbled through this exact Swift Package Manager (SPM) hiccup as a newbie, let me walk you through the key steps you might have missed:

1. 先确认你的项目目录结构是否合规

SwiftPM有严格的目录要求,你的项目得是这个样子才对:

YourProjectRoot/
├── Package.swift
└── Sources/
    ├── Foo/
    │   └── main.swift
    └── Bar/
        └── [你的库源文件,比如Bar.swift]

要是Bar不在Sources目录下,或者文件夹名称和模块名不一致(比如模块叫Bar但文件夹叫BarLib),SwiftPM根本找不到它。

2. 检查Package.swift的配置(这是核心!)

你必须在Package.swift里同时声明库目标Bar和可执行目标Foo,还要让Foo明确依赖Bar。给你个正确的示例参考:

// swift-tools-version: 5.9
import PackageDescription

let package = Package(
    name: "YourProjectName",
    dependencies: [],
    targets: [
        // 先声明库目标Bar
        .target(
            name: "Bar",
            dependencies: []),
        // 再声明可执行目标Foo,并把Bar加入依赖
        .executableTarget(
            name: "Foo",
            dependencies: ["Bar"]),
    ]
)

划重点:

  • 两个target必须都写在targets数组里
  • executableTarget的dependencies一定要包含"Bar",不然SwiftPM不会把Bar模块链接到Foo上
  • 库目标用.target,可执行目标用.executableTarget,别搞混了

3. 确认main.swift里的导入语句正确

在Sources/Foo/main.swift里的导入要准确,大小写和模块名完全一致(Swift是大小写敏感的!):

import Bar

// 比如调用Bar里的内容:Bar.someFunction()

4. 清理缓存后重新构建

有时候旧的构建缓存会搞出奇怪的问题,先清掉再重新构建试试:

swift package clean
swift build

新手容易踩的坑

  • 把Bar做成了独立的Package:如果Bar是单独的项目,那你需要在Foo的Package.swift里通过dependencies引入本地路径依赖,但如果是同一个项目里的两个模块,应该放在同一个Package下的不同target里。
  • Bar的目录里没有源文件:要是Sources/Bar下面空无一物,SwiftPM不会生成这个模块,自然会报找不到的错误。

按照这些步骤检查一遍,应该就能解决这个问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:03:52