xcode Apollo/GraphQL错误:标识符名称冲突:变量名应仅包含字母数字字符'__typename'(identifier_name)

q5iwbnjs  于 2023-06-24  发布在  其他
关注(0)|答案(2)|浏览(92)

我在Swift项目中使用了GraphQL。我已经通过CocoaPods安装了Apollo,并在项目中添加了一个schema.json文件。但是,我的项目中总是出现错误。我目前正在处理的错误位于API.swift中,这是一个由Apollo自动生成的文件。该文件包含自动生成的变量“__typename”,因为Apollo似乎会在编译时重新生成这个变量(换句话说,我不能简单地删除这些“__typename”的声明)。
我不断得到这个错误在我的API.swift文件:
Variable name should only contain alphanumeric characters '__typename' (identifier_name)
有人知道这是为什么吗?我的朋友有一个完全相同实现的项目(他的API.swift文件具有完全相同的变量名),并且它可以工作!我的答录机阿波罗有问题吗?
谢谢!

new9mtju

new9mtju1#

我遇到了同样的问题,发现我的项目使用了SwiftLint。请检查您是否在pod文件中使用SwiftLint。
默认启用的SwiftLint规则Identifier Name之一导致自动生成的Apollo GraphQL API.swift文件中出现标识符名称违规错误消息。
标识符名称规则的说明:
标识符名称应仅包含字母数字字符并以小写字符开头,或者仅包含大写字母。在上述情况的例外中,当变量名被声明为静态和不可变时,它们可以以大写字母开头。变量名不应过长或过短。
您有两个选项来禁用此规则。

选项1:对您的整个项目禁用规则

如果您不想在项目中使用特定的SwiftLint规则,那么您可以通过在xcode项目中添加和配置.swiftlint.yml来完全禁用这些规则。

disabled_rules: # rule identifiers to exclude from running

  - identifier_name

选项二:文件级禁用规则

在抛出'__typename'错误的行上方添加禁用注解。

// swiftlint:disable:this identifier_name

我建议使用选项1,因为选项2将要求您禁用生成Apollo GraphQL API构建阶段,因为这将重新生成您的API.swift文件。
我的设置:

  • Xcode:版本12.4
  • Mac OS X:版本:10.15.7
  • Apollo:apollo/2.33.4 darwin-x64 node-v12.18.3
w8ntj3qf

w8ntj3qf2#

我也遇到了同样的问题,我尝试禁用整个项目的规则,但是swiftlint也有其他警告,所以我对swiflint使用了路径排除。您可以使用配置文件**.swiftlint.yml**,通过在配置的排除部分指定要排除的路径,可以有效地禁用这些路径SwiftLint
下面是一个如何配置.swiftlint.yml的示例:

excluded: # paths to ignore during linting. overridden by `included`.
 - Services/GraphQL

相关问题