首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用apollo客户端从schema.graphql中提取typescript接口:codegen

如何使用apollo客户端从schema.graphql中提取typescript接口:codegen
EN

Stack Overflow用户
提问于 2020-03-28 05:14:25
回答 1查看 614关注 0票数 1

看起来我需要一些帮助,因为我现在正在寻找一个解决方案。

我使用graphql创建了一个angular项目,并为此配置了apollo客户端。在后端,我使用带有rebing/graphql扩展的laravel。现在我想从我的模式中提取一些typescript接口,以便在我的逻辑中使用它们。不久前,我开始开发自己的小系统,在该系统中,我在运行时从json定义动态生成gql查询。我想,这也是可能会受到挑战的东西-我想..这就是为什么在我的代码中没有真正的graphql查询定义。我不使用任何.gql/.raphql文件。

我的graphql查询是使用如下内容创建的:

代码语言:javascript
运行
复制
UserModel.with('posts', { pagination: 10, offset: 0 }).get() <-- QueryRef

我想说的是,通过这种方式,我不能很容易地启动apollo typescript生成器来搜索我的项目中的任何graphql查询来生成类型。

我已经成功地从端点下载了我的模式,如下所示:

代码语言:javascript
运行
复制
apollo client:download-schema ./libs/graphql/src/lib/schema.graphql --endpoint https://api.ellingtons-palace.com/graphql

它工作得很好。这样我就可以得到grapqhl或json模式。

我所不能做的是生成界面的typescript文件,以便在我的代码中使用。我试着这样做:

代码语言:javascript
运行
复制
apollo codegen:generate --localSchemaFile=libs/graphql/src/lib/schema.json --target=typescript --includes=libs/graphql/src/lib/schema.graphql --tagName=graphql --addTypename --globalTypesFile=libs/graphql/src/lib/graphql-global-types.ts

不幸的是,每次我收到如下错误:

The type of your project could not be derived from your config.

Field "UserType.Locations" already exists in the schema. It cannot also be defined in this type extension.

有没有人可以告诉我我做错了什么,或者有什么选项可以将我的模式转换为有效的typescript?

提前感谢!!

问候Jules ;)

EN

回答 1

Stack Overflow用户

发布于 2020-03-28 06:16:15

我认为您的问题在于,要让apollo codegen:generate正常工作,您不仅需要一个模式,还需要提供该工具可以解析的查询。

该查询用于确定工具应该生成什么类型。它不会根据您查询的属性生成整个模式的所有潜在类型,而只生成您实际需要的类型。

这个UserModel.with不是graphql查询语法(看起来像JavaScript),所以我认为apollo codegen:generate不能解析它。它可以解析嵌入在JavaScript (或TypeScript)中的graphql,通过提取graphql的部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60894204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档