前提・実現したいこと
開発初心者です。
いくつか似たような記事がありますが、下記のような Socket.IO をつかった簡単な Node.js x Swift 動作を手元で作りたいと思っています。
https://qiita.com/hiyuzawa/items/15c9f10dcdf0fcb37b4a
https://qiita.com/Suna/items/75785a24daf759a72b11
ビルドしようとすると、main.swift で import SocketIO している部分にエラーが出て、 "No such module SocketIO" と表示されます。
ググっていくつかの解決策(下記)を試してみましたがどれもダメで一日ずっと困っているので、どなたかお助けいただけるととてもありがたいです。。
発生している問題・エラーメッセージ
No such module SocketIO
該当のソースコード
main.swift
Swift
1import Foundation 2import SocketIO //ここにエラーが出る 3 4let socket = SocketIOClient(socketURL: URL(string: "http://localhost:3000")!, config: [.forceWebsockets(true)]) 5 6socket.on("connect") { data, ack in 7 print("socket connected") 8 9 print("send message") 10 socket.emit("from_client", "Hello") 11} 12 13socket.on("from_server") { data, ack in 14 if let msg = data[0] as? String { 15 print("receive: " + msg) 16 } 17} 18 19socket.connect() 20 21CFRunLoopRun() 22
試したこと
####1. Socket.IO まわりの一通りの環境設定
#####サーバー側
- ターミナル:npm install socket.io
- → package.json に Socket.IO が追加されていることは確認
json
1{ 2 "name": "chat-app", 3 "version": "1.0.0", 4 "description": "", 5 "main": "index.js", 6 "scripts": { 7 "start": "./node_modules/.bin/nodemon server.js" 8 }, 9 "author": "", 10 "license": "ISC", 11 "dependencies": { 12 "ejs": "^3.1.2", 13 "express": "^4.17.1", 14 "mysql": "^2.18.1", 15 "nodemon": "^2.0.3", 16 "socket.io": "^2.3.0", 17 } 18}
#####クライアント側
- ターミナル:pod init
- Podfile に
pod 'Socket.IO-Client-Swift', '~> 15.2.0'
を追加 - ターミナル:pod install
platform :ios, '9.0' use_frameworks! def install_pods pod 'Socket.IO-Client-Swift', '~> 15.2.0' end target 'chat-app-client' do install_pods end # Pods for chat-app-client target 'chat-app-clientTests' do inherit! :search_paths # Pods for testing install_pods end target 'chat-app-clientUITests' do # Pods for testing install_pods end
####2. Swift Package Manager のセットアップ
- ターミナル:swift package init --type executable
- Package.swift:
.Package(url: "https://github.com/socketio/socket.io-client-swift", majorVersion: 15)
を dependencies に追加
swift
1import PackageDescription 2 3let package = Package( 4 name: "chat-app-client", 5 dependencies: [ 6 // Dependencies declare other packages that this package depends on. 7 // .package(url: /* package url */, from: "1.0.0"), 8 .Package(url: "https://github.com/socketio/socket.io-client-swift", majorVersion: 15) 9 ], 10 targets: [ 11 // Targets are the basic building blocks of a package. A target can define a module or a test suite. 12 // Targets can depend on other targets in this package, and on products in packages which this package depends on. 13 .target( 14 name: "chat-app-client", 15 dependencies: []), 16 .testTarget( 17 name: "chat-app-clientTests", 18 dependencies: ["chat-app-client"]), 19 ] 20)
→ただし、この Package.swift の修正を加えるとこのような新たなエラーが出てきてしまいます。
'Package.Dependency' has no member 'Package' .Package(url: "https://github.com/socketio/socket.io-client-swift", majorVersion: 15)
####3. xcodeproj ファイルではなく xcworkspace を開く
こちらの記事を参照してやってみました。
xcworkspace 自体のビルドはできるのですが、元の全体ファイルのビルドエラーは治りませんでした。
補足情報(FW/ツールのバージョンなど)
Xcode Version 11.4.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/02 06:26
2020/05/02 09:31
2020/05/02 11:34
2020/05/02 12:06
2020/05/02 12:38