Gặp lỗi không có mô-đun nào như vậy khi sử dụng Xcode, nhưng khung là có


344

Tôi hiện đang mã hóa trong Swift và tôi đã gặp lỗi:

Không có mô-đun xã hội như vậy

Nhưng tôi không hiểu, vì mô-đun nằm trong dự án của tôi, được khai báo trong "Các khung và thư viện được liên kết" và trong "Các nhị phân nhúng".

Các khung công tác nằm trong Objective-C, vì vậy tôi đã viết một Bridge Header cho nó.

Xin vui lòng, làm thế nào tôi có thể làm cho Xcode nhận ra khuôn khổ?

Mô-đun lỗi

Dự án

Liên kết khung, thư viện

Cầu đầu


20
Không được quá mr. Rõ ràng nhưng bạn đã thử làm sạch hoàn toàn và xây dựng?
Kalel Wade

28
Nếu tiêu đề khung đã được bao gồm trong tệp tiêu đề bắc cầu thì bạn không phải nhập nó trong tệp nguồn Swift.
Martin R

2
Ngoài ra, bạn có thể phải sử dụng dấu ngoặc kép để nhập:#import "Social/Social.h"
Martin R

3
cùng một lỗi với CocoaPods 'không có lỗi mô-đun như vậy' trong xcode.
AsimRazaKhan

1
Tôi đã thay đổi Mục tiêu triển khai từ 11 thành 10, nhưng quên nó trong Podfile platform :ios, '10.0'. Đó là giải pháp.
Artur Guseynov

Câu trả lời:


320

Tôi không chắc tại sao điều này xảy ra, nhưng một cách để giải quyết vấn đề của bạn là đi vào cài đặt bản dựng và xác định Đường dẫn tìm kiếm khung tới thư mục chứa các khung đang nghi vấn. Nếu các khung được đặt trong thư mục dự án của bạn, chỉ cần đặt đường dẫn tìm kiếm khung $(SRCROOT)và đặt thành đệ quy.


5
Cảm ơn. Tôi đã phải thực hiện việc này trong cài đặt xây dựng dự án thay vì cài đặt xây dựng mục tiêu của mình
Pulsar

8
Mẹo cho tôi là tìm đường dẫn đến khung để sử dụng trong Đường dẫn tìm kiếm khung. $ {TARGET_BUILD_DIR} /YourFrameworkName.framework hoạt động tốt với tôi. Xem thêm stackoverflow.com/questions / 32816507 / từ
Hoàng tử Chris

11
Phải làm điều này Project Build Settingsthay vì Target Build Settings.
Maxim Mikheev

378
Tôi đã sửa cái này bằng cách đi vệ sinh. Khi tôi trở lại, nó đã hoạt động. Tôi khá chắc chắn rằng tôi đã thử mọi thứ trong chủ đề này, dunno chính xác những gì đã làm công việc. Tôi cũng đã cầu nguyện ở một số điểm.
nmdias

2
LƯU Ý TRÊN CỐ ĐỊNH: $ (SRCROOT) chỉ hoạt động với tôi khi tôi thêm nó vào Đường dẫn tìm kiếm khung cho DỰ ÁN PODS.
addzo

546

Trong trường hợp đó là chiều thứ sáu hoặc bất cứ lúc nào sau 1 giờ sáng:

Mở xcodeprojthay vì xcworkspacesẽ gây ra lỗi như thế này ...


2
Tôi đã thử điều này như một chén thánh. Buồn cười. Ai biết nhưng thoát ra sau đó mở lại không gian làm việc thực sự làm việc là tốt. Làm sạch, sau đó xây dựng.
thứ

3
9 giờ tối bằng cách sử dụng fastlane, chỉ định phòng tập thể dục (dự án: ---) thay vì phòng tập thể dục (không gian làm việc: ----) Cảm ơn!
RickiG

1
Điều này đã xảy ra với tôi sau khi Xcode bị sập và tôi đã chọn ứng dụng 'mở lại' từ báo cáo lỗi. Tôi sẽ biết rõ hơn vào lần sau.
Đóng dấu

Tôi đã cài đặt lại XCODE và tôi đã gặp lỗi này vì tôi đang mở ứng dụng thông qua các dự án đã mở gần đây. Đóng dự án, Tệp -> Mở -> chọn tệp xcworkspace và mọi thứ đã hoạt động.
Dpedrinha

Cũng áp dụng để xây dựng trên dòng lệnh (vấn đề của chúng tôi): xcodebuild -workspace yourproject.workspace.
Ben Butzer

57

Đảm bảo rằng việc đặt tên cấu hình của bạn trong các dự án phụ khớp với cấu hình của dự án "cha mẹ". Nếu việc đặt tên cấu hình không khớp chính xác (phân biệt chữ hoa chữ thường), Xcode sẽ hủy bỏ quá trình lưu trữ và hiển thị lỗi "Không có mô-đun như vậy ..."

Đó là, nếu bạn có một dự án "cha mẹ" có cấu hình có tên là "AppStore", bạn phải đảm bảo rằng tất cả các tiểu dự án cũng có tên cấu hình này.

Xem ảnh chụp màn hình đính kèm của tôi.

Thiết lập cấu hình trong dự án "cha mẹ"

Thiết lập cấu hình trong dự án phụ 1

Thiết lập cấu hình trong dự án phụ thứ 2


1
Trong trường hợp của tôi, tiểu dự án chỉ có DebugDistributiondự án mẹ của nó đang cố gắng xây dựng cho Release. Giải pháp là tạo một bản sao Distributiontrong dự án con và đổi tên bản sao đó Release.
olivaresF

2
Điều này dẫn đến việc tôi tìm ra vấn đề, nhưng tôi đã giải quyết nó bằng cách thêm vào các đường dẫn tìm kiếm khung trong cấu hình tùy chỉnh của mình vì tôi không muốn chạm vào một tiểu dự án của bên thứ 3 :)
DeFrenZ

Điều đó đã khắc phục vấn đề! Làm tốt lắm :)
alicanbatur

Cảm ơn bạn! Tôi đã có 3 cấu hình trong dự án chính của mình. Vì vậy, tôi đã làm tương tự cho khung và nó đã giúp.
daxh

Bất kỳ manh mối nào về cách tạo Xcode xây dựng cấu hình cụ thể của tiểu dự án lồng nhau? Không muốn đổi tên cấu hình của các tiểu dự án, vì nó trở nên quá kết nối với việc thêm các cấu hình mới vào dự án chính
Dren

44

Tôi không chắc tại sao câu trả lời của Martin R trong các bình luận cho câu hỏi lại bị coi thường đến vậy:

Hãy chắc chắn rằng bạn đã cố gắng bỏ qua việc nhập khung vì nó đã được thêm vào với tiêu đề bắc cầu .

Hi vọng điêu nay co ich


37

Tôi gặp vấn đề tương tự khi sử dụng Cocoapods và Swift . Tôi không nhận thấy các dòng sau trong Podfile:

# Uncomment this line if you're using Swift
# use_frameworks!

Vì vậy, tất cả những gì tôi phải làm là thay đổi nó thành:

# Uncomment this line if you're using Swift
use_frameworks!

... và nó đã hoạt động :)


Vâng đối với tôi use_frameworks thậm chí không có trong Podfile của tôi nên tôi đã thêm nó
PhoenixB

22

Vui lòng so sánh ảnh chụp màn hình này với cài đặt bản dựng của bạn. Nó có thể làm việc này. Đi đến đường dẫn tìm kiếm khung:

Nhập mô tả hình ảnh ở đây


Cũng được đề cập bởi Chris Prince .
Franklin Yu

18

Tôi đã trải qua vấn đề này là tốt. Cách khắc phục đối với tôi là các sơ đồ Lưu trữ giữa hai dự án không khớp nhau. Tôi có một xcworkspace với một dự án khung và một dự án ứng dụng. Vấn đề là trong lược đồ Lưu trữ cho ứng dụng của tôi, tôi đã sử dụng Cấu hình Xây dựng khác với khung đang sử dụng cho lược đồ Lưu trữ. Tôi đặt cả Cấu hình xây dựng thành Phát hành và điều đó đã khắc phục sự cố.


Điều này làm việc cho tôi. Tôi đặt dự án chính Build Config của mình trở lại Phát hành (từ Phân phối) và vì vậy bây giờ nó phù hợp với dự án phụ. Tất cả đều hoạt động. Cảm ơn bạn!
Charlie Seligman

1
Khung của chúng tôi không có cấu hình AdHoc mà chúng tôi đã sử dụng cho dự án - điều đó có nghĩa là nó không được xây dựng cùng với dự án.
Johan

15

Các bước sau đây làm việc cho tôi.

  1. Thoát xcode
  2. Chạy "pod update"trong thiết bị đầu cuối
  3. Mở .xcworkspacevà xây dựng lại.

1
Các bước làm việc cho tôi ... Cảm ơn ... Tôi chạy "Pod cài đặt" nhưng đã không nhận được "Module XXX không tìm thấy đi .." nhưng khi bỏ XCode và sau đó mở lại Workspace giúp tôi ..
Aks

Vấn đề của tôi là sau khi thêm cấu hình và sơ đồ xây dựng mới, tôi nhận được "Không tìm thấy mô-đun ..." Thoát Xcode không hoạt động, sau khi pod installnó hoạt động.
William Hu

Điều này làm việc cho tôi. Bất kỳ lời giải thích như tại sao điều này khắc phục vấn đề?
Nico Cernek

Nó làm việc cho tôi. Sau khi mở lại projectname.xcworkspace, cần phải dọn dẹp và xây dựng lại để làm cho nó hoạt động.
Prashant

14

Trong trường hợp của tôi, sau nhiều nỗ lực để tìm ra những gì tôi đã làm sai khi nhập một khung công tác, cuối cùng tôi phát hiện ra rằng chính khung đó là vấn đề. Nếu bạn không nhận được khung của mình từ một nguồn đáng tin cậy, bạn nên kiểm tra khung và đảm bảo rằng nó chứa thư mục Mô-đun có tệp module.modulemap bên trong nó. Nếu module.modulemap không xuất hiện, bạn sẽ gặp lỗi "Không có mô-đun như vậy 'MyFramework'".

Ví dụ hiển thị cấu trúc thư mục của SwiftyJSON.framework

Nếu thư mục Mô-đun bị thiếu thư mục "MyFramework.swiftmodule" thì khung sẽ được tìm thấy nhưng Xcode sẽ không biết về nội dung của nó nên bạn sẽ gặp các lỗi khác nhau.


2
Vì một số lý do, điều này không được hiển thị trong xcode 9.1 ngay cả khi nó xuất hiện. Nhấp chuột phải vào khung của bạn> Hiển thị trong Finder> và đảm bảo modulemap của bạn ở đó. Nếu bạn đang sử dụng khung thủ công trong dự án nhóm, hãy xây dựng lại nhóm của bạn nếu bạn vừa thêm khung thủ công mới hoặc cập nhật khung hiện có.
Christopher Larsen

1
Cảm ơn! Tôi đã tự tạo tệp và nó đã hoạt động: mô-đun khung NAME {tiêu đề ô "NAME.h" xuất * mô-đun * {export *}}
Sjoerd Perfors

12

Giả sử Framework thực sự ở đó và trong đường dẫn, v.v ... xóa thư mục ~ / Library / Developer / Xcode / DeruredData / ModuleCache (và làm sạch dự án và xóa dữ liệu dẫn xuất cụ thể của dự án để có biện pháp tốt).

Khi bạn thực hiện dọn dẹp tiêu chuẩn, thư mục ModuleCache sẽ không được xây dựng lại.


1
Tôi vừa làm điều đó như bạn đã nói với tôi, và nó không hoạt động: /
alexandresecanove

1
Sau đó, bạn có thể phải đối mặt với một vấn đề khác trông giống như vấn đề tôi gặp phải. : - /
Brad Brighton

Tôi đã gặp vấn đề tương tự với Cocoapod và việc xóa các tệp trong ModuleCache đã giúp tôi rất nhiều.
HolySamosa

10

Điều làm việc cho tôi là giải pháp này cho một câu hỏi khác. Đóng Xcode và mở lại dự án dưới dạng không gian làm việc.
Đi đến thư mục dự án của bạn và mở .xcodeworkspace tập tin.
Khi bạn mở không gian làm việc (thay vì dự án), Pods sẽ xuất hiện dưới dạng dự án cấp cao nhất trong Project Navigator.


9

Hãy chắc chắn rằng Find implicit Dependenciestrong tùy chọn Xây dựng trong Lược đồ được bật!


Điều này làm việc cho tôi ..
Abhinav Dobhal

7

Tôi cũng gặp phải lỗi tương tự vài ngày trước. Đây là cách tôi giải quyết vấn đề:

Lỗi là "không tìm thấy mô-đun"

  • Tạo Podfile trong thư mục dự án gốc của bạn
  • Cài đặt cocoapods (trình quản lý phụ thuộc cho các dự án Swift và iOS)
  • Chạy cài đặt pod
  • Chuyển đến Cài đặt xây dựng dự án:

    • Tìm tiêu đề cầu nối Objective-c trong trình biên dịch Swift - Tạo mã (Nếu bạn không tìm thấy trình biên dịch Swift tại đây, có thể thêm một tệp Swift mới vào dự án)
    • Kéo và thả tệp tiêu đề thư viện từ bên trái sang tiêu đề bắc cầu (xem hình ảnh đính kèm)nhập mô tả hình ảnh ở đây
  • Tạo một tệp tiêu đề bắc cầu mới: ví dụ: TestProject-Bridging-Header.h và đặt trong Swift Compiler → Objective-C Generated Interface Header Name (ref, xem hình trên)

  • Trong tệp TestProject-Bridging-Header.h, hãy viết #import "Mixpanel / Mixpanel.h"
  • Trong tệp Swift của bạn, mã phải là: Nhập Mixpanel (tức là tên của thư viện)

Đó là tất cả.


Câu trả lời này đã giúp. Khi cố gắng thiết lập nó cho MBProTHER, cuối cùng tôi đã làm theo hướng dẫn tại ios-support.blogspot.com/2017/04/ , điều này rất giống nhau.
Vette

6

Ok, tôi đã giải quyết vấn đề tương tự như thế nào là đặt vị trí dữ liệu dẫn xuất liên quan đến thư mục không gian làm việc thay vì giữ mặc định. Chuyển đến tùy chọn trong xcode. Chuyển đến tab vị trí trong tùy chọn và đặt dữ liệu Đã tạo thành Tương đối. Hy vọng nó giúp.


Nó chỉ hoạt động một lần, sau đó khi tôi chạy đến cùng một vấn đề là không tìm thấy mô-đun.
nycdanie

5

Tôi đã nhận được cùng một lỗi cho

import Firebase

Nhưng sau đó nhận thấy rằng tôi không thêm pod vào phần mục tiêu chính mà chỉ thêm vào các mục tiêu Test và TestUI trong Podfile.

Với lệnh

pod init

đối với dự án nhanh chóng xcode, Podfile sau được tạo

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'MyApp' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MyApp

  target 'MyAppTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'MyAppUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end

Vì vậy, cần đảm bảo rằng người ta thêm các nhóm vào bất kỳ trình giữ chỗ thích hợp nào.


5

Nếu bạn đang xây dựng một nền tảng như tvOS, hãy đảm bảo bạn đã chọn trình giả lập Apple TV (tức là khớp).

Xây dựng ứng dụng tvOS với trình giả lập iOS được chọn đã cho tôi chính xác lỗi này. Dành phần tốt hơn của một giờ để tìm kiếm tất cả các loại vấn đề xây dựng ... doh.


1
Áp dụng tương tự nếu bạn chọn "My Mac" khi xây dựng dự án iOS. Tôi không biết tại sao Xcode thậm chí còn cho phép điều này ...
Klaas

Cảm ơn bạn! Bây giờ rõ ràng, nhưng lỗi đã khiến tôi tìm kiếm các giải pháp phức tạp hơn!
Dan Messing

5

Trong trường hợp của tôi, ứng dụng IPHONEOS_DEPLOYMENT_TARGET được đặt thành 9.3 trong khi trong khung mới được tạo của tôi, nó được đặt thành 10.2

Trình giải quyết phụ thuộc ngầm đã bỏ qua khung mới của tôi vì các yêu cầu của nền tảng đích cao hơn yêu cầu ứng dụng.

Sau khi điều chỉnh khung Mục tiêu triển khai iOS để phù hợp với mục tiêu triển khai ứng dụng của tôi, khung được biên dịch và liên kết thành công.


Cảm ơn. Sau khi lãng phí vài giờ, tôi thấy mục tiêu triển khai là vấn đề.
niks

4

Tôi đã nhận được cùng một lỗi khi tôi thêm một vài khung sử dụng Cocoapods. Nếu chúng ta đang sử dụng Pods trong dự án của mình, chúng ta nên sử dụng xcodeworkspacethay vì xcodeproject. Để chạy dự án thông qua xcodebuild, tôi đã thêm -workspace <workspacename>tham số trong xcodebuildlệnh và nó hoạt động hoàn hảo.


Nếu bạn có câu hỏi MỚI, vui lòng hỏi nó bằng cách nhấp vào nút Hỏi Câu hỏi . Nếu bạn có đủ danh tiếng, bạn có thể nêu lên câu hỏi. Ngoài ra, "đánh dấu sao" nó là mục ưa thích và bạn sẽ được thông báo về bất kỳ câu trả lời mới nào.
Alessandro Cuttin

@pawan singh bạn đã tiết kiệm vài giờ cho tôi, cảm ơn bạn!
Dmitry Senkovich

3

Tôi thấy rằng Import Pathstrong đó Build Settingslà sai cho một mô-đun tùy chỉnh (MySQL). Sau khi chỉ ra rằng đúng hướng, tin nhắn đã biến mất.


@rplankenhorn Vâng, chỉ là nơi bạn đã đặt chúng vào máy của bạn. Chạy một findnếu bạn không biết nó.
qwerty_so

3

Tôi đã sửa cái này với

Mục tiêu -> Chung -> Khung và thư viện được liên kết

Thêm khung nên ở trên cùng trong Workspacethư mục. Đau ở mông.


3

Tôi vừa xóa cocoapod của tôi. Sau đó, tôi đã thực hiện một cài đặt pod để loại bỏ nó. Sau đó, tôi chỉ cần thêm nó trở lại vào podfile của mình và cài đặt lại. Điều đó làm cho nó hoạt động. Không chắc chắn lý do tại sao.


3

Tôi đã cài đặt pod. Build hoạt động mà không gặp vấn đề gì khi tôi xây dựng ứng dụng trên thiết bị của mình, nhưng kho lưu trữ không hoạt động. Tôi chỉ chạy

pod install

không có nhóm mới nào được cài đặt, chỉ cần tệp .xcodeproj được tạo lại và kho lưu trữ bắt đầu hoạt động


3

Trong Xcode 10.1, giải pháp cho tôi là thay đổi hệ thống xây dựng trên Cài đặt không gian làm việc trong menu Tệp. Theo mặc định, nó được đặt thành Hệ thống xây dựng mới , đã thay đổi thành Hệ thống xây dựng kế thừa và đó là một mẹo nhỏ.

nhập mô tả hình ảnh ở đây


Cảm ơn bạn đời, bạn đã cứu ngày của tôi! +1
DungeonDev

3

Có một số cấu hình sai tiềm năng mà vấn đề có thể phát sinh,

  1. Vui lòng xác nhận rằng bạn đã mở .xcworkspacenhưng không .xcodeprojtập tin. Cũng đảm bảo rằng bạn đã xây dựng Socialđầu tiên trước khi bạn xây dựng TriviaApp.
  2. Đảm bảo rằng Mục tiêu triển khai iOS được đặt giống nhau cho tất cả các mô-đun có ứng dụng chính. Ví dụ: TriviaAppmục tiêu triển khai của s được đặt thành 9.0, Socialmục tiêu triển khai của s cũng cần được đặt thành 9.0.
  3. Đảm bảo mô-đun chính ( TriviaApp) và khung được sử dụng ( Social) của bạn có cùng bộ cấu hình. ví dụ: Nếu dự án của bạn có ba cấu hình, Debug, Release, ReleasePremiumhơn khuôn khổ xã hội của bạn cũng cần phải có ba cấu hình Debug, Release, ReleasePremium. Cũng đảm bảo rằng cấu hình lưu trữ được đặt giống nhau cho cả hai TriviaAppSocial. tức là nếu TriviaApplược đồ lưu trữ của bạn được đặt thành ReleasePremium, Sociallược đồ lưu trữ của bạn cũng cần được đặt thànhReleasePremium .
  4. Vui lòng đảm bảo rằng bạn không cần nhập Socialvào từng .swifttệp khi tệp đã được thêm vào Bridging-Header.h.
  5. Trong trường hợp của vấn đề đến từ các tập tin Pod, hãy chắc chắn bạn đã uncomment #use_frameworks!vào use_frameworks!từ bạn Podfile. Thỉnh thoảng cài đặt lại pod hoạt động nếuSocial có bất kỳ phụ thuộc vào pod.
  6. Nếu không có bước nào ở trên hoạt động, hãy xóa thư mục dữ liệu dẫn xuất của bạn và thử xây dựng lại.

Wow, tôi sẽ không bao giờ tìm ra nó nếu không có sự giúp đỡ của bạn. Thật vậy, tôi đã có một cấu hình tùy chỉnh được thêm vào dự án chính của mình, nhưng nó bị thiếu trong khung.
Iulian Onofrei

@lulian rất vui khi biết điều đó đã giúp
Sazzad Hissain Khan

2

Nếu bạn đang sử dụng Carthage, các khung trong cài đặt tòa nhà thường ở trong

$(PROJECT_DIR)/Carthage/Build/iOS

Nếu bạn chạy carthage update --platform ios --no-build(để tiết kiệm thời gian), các tệp trong thư mục Build sẽ không được xử lý lại, thì các mô-đun sẽ không có sẵn cho XCode.

Trong trường hợp của tôi, tôi đã chạy carthage update --platform ios, sau đó vấn đề của tôi đã được giải quyết.


2

Nói chung => Các khung và thư viện được liên kết, tôi đã thêm tôi ./Pods/Pods.xcodeprojvà nó đã thực hiện thủ thuật


2

Đối với tôi chỉ xây dựng kiến ​​trúc hoạt động được đặt thành Yes cho cấu hình đã chọn. Điều này đã lừa

Chọn "Pods" từ trình điều hướng dự án bên trái> Chọn "Build Settings"> Build Build Architecture Only to No


1

Nếu tất cả các phương pháp trên không hiệu quả với bạn như trong trường hợp của tôi. Không có vấn đề gì vào ngày hôm trước nhưng sáng hôm sau tôi lại gặp phải lỗi tương tự. Tôi chỉ loại bỏ các khung bằng cách loại bỏ các tham chiếu và thêm chúng một lần nữa. Tôi biết điều này nghe có vẻ ngớ ngẩn, nhưng voila nó đã hoạt động.


1

Tôi gặp vấn đề tương tự với việc tải FacebookSDK, tôi đã thêm ~ / Documents / FacebookSDK (tìm kiếm khung của bạn) vào đường dẫn tìm kiếm Framework trong cài đặt Build và sau đó tôi có thể nhập mô-đun FBSDKShareKit


1

Để biết giá trị của nó (Tôi mới sử dụng Xcode 7.2 / Swift 2), nhưng tôi nhận thấy rằng chỉ cần có tệp .swift từ thư viện trong thư mục dự án sẽ tự động cho bạn quyền truy cập vào nó và không cần câu lệnh sử dụng.

Ví dụ: Tôi đang sử dụng SwiftyJSON và chỉ cần có tệp SwiftyJSON.swift trong dự án là tất cả những gì tôi cần. Các usingtuyên bố đã thực sự đem lại cho tôi những lỗi 'không có mô-đun như vậy' và lấy nó ra giải quyết nó, và nó hoạt động tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.