React Native expo运行:ios -构建失败-生成的swift文件中存在错误

iswrvxsc  于 2023-01-21  发布在  React
关注(0)|答案(1)|浏览(195)

我遵循以下指南:
https://www.mongodb.com/docs/realm/sdk/react-native/bootstrap-with-expo/
但是当我到达运行expo run:ios的步骤时,它失败了,并出现以下错误:

› Skipping dev server
› Planning build
› Executing react-native Pods/FBReactNativeSpec » [CP-User] Generate Specs

❌  (node_modules/expo-modules-core/ios/Swift/Functions/AsyncFunctionComponent.swift:94:17)

  92 |     }
  93 | 
> 94 |     let queue = queue ?? defaultQueue
     |                 ^ variable used within its own initial value
  95 | 
  96 |     queue.async { [body, name] in
  97 |       let returnedValue: ReturnType?

❌  (node_modules/expo-modules-core/ios/Swift/Views/ConcreteViewProp.swift:42:52)

  40 |     }
  41 |     guard let value = try propType.cast(value) as? PropType else {
> 42 |       throw Conversions.CastingException<PropType>(value)
     |                                                    ^ variable declared in 'guard' condition is not usable in its body
  43 |     }
  44 |     setter(view, value)
  45 |   }

❌  (node_modules/expo-modules-core/ios/Swift/Functions/ConcurrentFunctionDefinition.swift:8:33)

   6 |  */
   7 | public final class ConcurrentFunctionDefinition<Args, FirstArgType, ReturnType>: AnyFunction {
>  8 |   typealias ClosureType = (Args) async throws -> ReturnType
     |                                 ^ consecutive declarations on a line must be separated by ';'
   9 | 
  10 |   let body: ClosureType
  11 | 

❌  (node_modules/expo-modules-core/ios/Swift/Functions/ConcurrentFunctionDefinition.swift:8:34)

   6 |  */
   7 | public final class ConcurrentFunctionDefinition<Args, FirstArgType, ReturnType>: AnyFunction {
>  8 |   typealias ClosureType = (Args) async throws -> ReturnType
     |                                  ^ expected declaration
   9 | 
  10 |   let body: ClosureType
  11 | 

❌  (node_modules/expo-modules-core/ios/Swift/Functions/ConcurrentFunctionDefinition.swift:56:36)

  54 |         // swiftlint:disable force_cast
  55 |         let argumentsTuple = try Conversions.toTuple(arguments) as! Args
> 56 |         let returnValue = try await body(argumentsTuple)
     |                                    ^ consecutive statements on a line must be separated by ';'
  57 | 
  58 |         result = .success(returnValue)
  59 |       } catch let error as Exception {

❌  (node_modules/expo-modules-core/ios/Swift/Functions/ConcurrentFunctionDefinition.swift:94:49)

  92 | public func AsyncFunction<R>(
  93 |   _ name: String,
> 94 |   @_implicitSelfCapture _ closure: @escaping () async throws -> R
     |                                                 ^ expected ',' separator
  95 | ) -> ConcurrentFunctionDefinition<(), Void, R> {
  96 |   return ConcurrentFunctionDefinition(
  97 |     name,

❌  (node_modules/expo-modules-core/ios/Swift/Functions/ConcurrentFunctionDefinition.swift:94:62)

  92 | public func AsyncFunction<R>(
  93 |   _ name: String,
> 94 |   @_implicitSelfCapture _ closure: @escaping () async throws -> R
     |                                                              ^ expected ':' following argument label and parameter name
  95 | ) -> ConcurrentFunctionDefinition<(), Void, R> {
  96 |   return ConcurrentFunctionDefinition(
  97 |     name,

❌  (node_modules/expo-modules-core/ios/Swift/Functions/ConcurrentFunctionDefinition.swift:109:51)

  107 | public func AsyncFunction<R, A0: AnyArgument>(
  108 |   _ name: String,
> 109 |   @_implicitSelfCapture _ closure: @escaping (A0) async throws -> R
      |                                                   ^ expected ',' separator
  110 | ) -> ConcurrentFunctionDefinition<(A0), A0, R> {
  111 |   return ConcurrentFunctionDefinition(
  112 |     name,

❌  (node_modules/expo-modules-core/ios/Swift/Functions/ConcurrentFunctionDefinition.swift:109:64)

  107 | public func AsyncFunction<R, A0: AnyArgument>(
  108 |   _ name: String,
> 109 |   @_implicitSelfCapture _ closure: @escaping (A0) async throws -> R
      |                                                                ^ expected ':' following argument label and parameter name
  110 | ) -> ConcurrentFunctionDefinition<(A0), A0, R> {
  111 |   return ConcurrentFunctionDefinition(
  112 |     name,

❌  (node_modules/expo-modules-core/ios/Swift/Functions/ConcurrentFunctionDefinition.swift:124:55)

  122 | public func AsyncFunction<R, A0: AnyArgument, A1: AnyArgument>(
  123 |   _ name: String,
> 124 |   @_implicitSelfCapture _ closure: @escaping (A0, A1) async throws -> R
      |                                                       ^ expected ',' separator
  125 | ) -> ConcurrentFunctionDefinition<(A0, A1), A0, R> {
  126 |   return ConcurrentFunctionDefinition(
  127 |     name,

... Hundreds of similar errors later...

❌  (node_modules/expo-modules-core/ios/Swift/Views/ViewDefinition.swift:68:3)

  66 | public func View<ViewType: UIView>(
  67 |   _ viewType: ViewType.Type,
> 68 |   @ViewDefinition<ViewType>.ElementsBuilder _ elements: @escaping () -> [AnyDefinition]
     |   ^ struct 'ElementsBuilder' cannot be used as an attribute
  69 | ) -> ViewDefinition<ViewType> {
  70 |   return ViewDefinition(viewType, elements: elements())
  71 | }

❌  (node_modules/expo-modules-core/ios/Swift/Views/ViewManagerDefinitionComponents.swift:19:3)

  17 | public func Prop<ViewType: UIView, PropType: AnyArgument>(
  18 |   _ name: String,
> 19 |   @_implicitSelfCapture _ setter: @escaping (ViewType, PropType) -> Void
     |   ^ unknown attribute '_implicitSelfCapture'
  20 | ) -> ConcreteViewProp<ViewType, PropType> {
  21 |   return ConcreteViewProp(
  22 |     name: name,

❌  (node_modules/expo-modules-core/ios/Swift/Views/ViewManagerDefinitionComponents.swift:34:3)

  32 |  */
  33 | public func OnViewDidUpdateProps<ViewType: UIView>(
> 34 |   @_implicitSelfCapture _ closure: @escaping (_ view: ViewType) -> Void
     |   ^ unknown attribute '_implicitSelfCapture'
  35 | ) -> ViewLifecycleMethod<ViewType> {
  36 |   return ViewLifecycleMethod(type: .didUpdateProps, closure: closure)
  37 | }

› Compiling react-native Pods/React-RCTVibration » RCTVibrationPlugins.mm
› Compiling react-native Pods/React-RCTVibration » RCTVibration.mm
› Compiling react-native Pods/React-RCTVibration » React-RCTVibration-dummy.m
› Compiling react-native Pods/React-RCTSettings » RCTSettingsManager.mm
› Compiling react-native Pods/React-RCTSettings » React-RCTSettings-dummy.m
› Compiling react-native Pods/React-RCTSettings » RCTSettingsPlugins.mm
› Compiling react-native Pods/React-RCTNetwork » React-RCTNetwork-dummy.m

› 104 error(s), and 0 warning(s)

我不确定我做错了什么Xcode说了下面的语句
CommandError: Failed to build iOS project. "xcodebuild" exited with error code 65.
我安装了最新的Expo CLI
我试着直接在Xcode中构建项目,项目确实构建了,但它不会在模拟器上启动,expo打开,但当连接到开发服务器时,应用程序崩溃。
我不明白为什么运行expo run:ios会导致构建失败,而在Xcode中构建会导致“成功”。

velaa5lx

velaa5lx1#

这个解决方案其实有点傻,
所以我能在Xcode中成功构建而不能使用expo run:ios成功构建的原因是因为我在这台机器上安装了两个版本的Xcode。一个版本是Xcode 12. 3,并且xcrun指向了那个sdk包。我可以通过运行sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer来修复这个问题,仔细检查xcrun --show-sdk-path现在应该列出适当的路径。我删除了pod文件和pod.lock文件,并使用expo run:ios重新构建了应用程序

相关问题