Apollo/GraphQL 错误:标识符名称违规:变量名称应仅包含字母数字字符“__typename”(identifier_name)
Posted
技术标签:
【中文标题】Apollo/GraphQL 错误:标识符名称违规:变量名称应仅包含字母数字字符“__typename”(identifier_name)【英文标题】:Apollo/GraphQL error: Identifier Name Violation: Variable name should only contain alphanumeric characters '__typename' (identifier_name) 【发布时间】:2021-05-13 15:05:55 【问题描述】:我在我的 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 文件具有完全相同的变量名),并且它可以工作!我的机器上的 Apollo 有问题吗?
谢谢!
【问题讨论】:
您设法解决了这个问题吗?你使用的是哪个版本的 Xcode 和 Apollo? 【参考方案1】:我遇到了同样的问题,发现我的项目正在使用SwiftLint。请检查您是否在 pod 文件中使用 SwiftLint。
默认启用的 SwiftLint 规则之一Identifier Name 导致自动生成的 Apollo GraphQL API.swift 文件中出现 Identifier Name Violation 错误消息。
标识符名称规则说明:
标识符名称只能包含字母数字字符并以小写字符开头,或者只能包含大写字母。在上述情况下,变量名在声明为静态和不可变时可以以大写字母开头。变量名不宜过长或过短。
您有 2 个选项可以禁用此规则。
选项 1:为您的整个项目禁用规则:
如果您不想为您的项目使用特定的 SwiftLint 规则,那么您可以通过在您的 xcode 项目中添加和configuring.swiftlint.yml 来完全禁用这些规则。
disabled_rules: # rule identifiers to exclude from running
- identifier_name
选项 2:在文件级别禁用规则
在抛出“__typename”错误的行上方添加禁用comment。
// swiftlint:disable:this identifier_name
我建议使用选项 1,因为选项 2 将要求您禁用 Generate Apollo GraphQL API Build Phase,因为这将重新生成您的 API.swift 文件。
我的设置:
Xcode:12.4 版 Mac OS X:版本:10.15.7 阿波罗:apollo/2.33.4 darwin-x64 node-v12.18.3【讨论】:
以上是关于Apollo/GraphQL 错误:标识符名称违规:变量名称应仅包含字母数字字符“__typename”(identifier_name)的主要内容,如果未能解决你的问题,请参考以下文章
为多个 vue 属性重用 apollo graphql 查询定义
GraphQL - 如何捕获“内部”Apollo/GraphQL 错误 - Java Spring Boot