使用:
在Xcode的构建阶段,当它执行Apollo GraphQL API脚本时,出现重复片段和操作的错误,a-la:
select id,name, code, attribute, amount
from attb
where (code = 123 and attribute='Alpha') OR code = 122
或
"There can only be one fragment named..."
,该项目将拒绝构建。
清理构建文件夹将使您可以在错误再次出现之前再次构建或运行项目。
答案 0 :(得分:0)
问题在于bash "There can only be one operation named..."
命令正在本地find
目录中查找重复文件!这是由于以下情况引起的:
DerivedData/
目录设置为DerivedData/
为此更改Apollo的构建阶段脚本:
Relative
对此:
$APOLLO_FRAMEWORK_PATH/check-and-run-apollo-cli.sh codegen:generate --queries="$(find . -name '*.graphql')" --schema=schema.json API.swift
详细信息:
$APOLLO_FRAMEWORK_PATH/check-and-run-apollo-cli.sh codegen:generate --queries="$(find . -name '*.graphql' -not -path "*DerivedData/*")" --schema=schema.json API.swift
更改为Relative
(或Apollo不在任何目录中)。您可以在此处找到设置: Xcode>首选项>位置>派生数据 Default
来排除DerivedData/
文件夹。您可以通过转到项目根目录>(目标项目)>构建阶段>生成Apollo GraphQL API (在安装步骤中应已添加,请参见here)找到脚本。使它看起来像这样:
-not -path "*DerivedData/*"
您可能需要最后一次从项目文件夹中删除$APOLLO_FRAMEWORK_PATH/check-and-run-apollo-cli.sh codegen:generate --queries="$(find . -name '*.graphql' -not -path "*DerivedData/*")" --schema=schema.json API.swift
文件夹,并且进行最后一次清理(DerivedData/
)也没有什么坏处。