首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阿波罗CodeGen无法生成TS类型

阿波罗CodeGen无法生成TS类型
EN

Stack Overflow用户
提问于 2019-03-08 23:58:53
回答 2查看 809关注 0票数 0

我正在尝试使用Apollo CodeGen生成一些TS类型,使用json来自内省查询。

模式文件的顶部如下所示(如果可以提供其他信息,请告诉我)

代码语言:javascript
复制
{
  "data": {
  "__schema": {
  ...

我得到的错误是

代码语言:javascript
复制
➜  continuum git:(typescript) ✗ apollo client:codegen --target typescript --localSchemaFile="./schema.json"
{ Error: Error in "Loading schema for Unnamed Project": Syntax Error: Expected Name, found }

然后是很多我无法理解的输出。下面是其中的一小部分:

代码语言:javascript
复制
graphql-schema:/schema.graphql?%22%22%22Schema%20for%20types%20that%20can%20be%20active%20or%20inactive%22%22%22%0Ainterface%20ActivatedInterface%20%7B%0A%20%20%22%22%22Is%20this%20object%20enabled%3F%22%22%22%0A%20%20active%3A%20Bool!%0A%7D%0A%0A%22%22%22An%20advertisement%22%22%22%0Atype%20Ad%20implements%20CommonInterface%20%7B%0A%20%20%22%22%22Aggregate%20data%20for%20the%20campaigns%20field%22%22%22%0A%20%20_campaignStats(%0A%20%20%20%20%22%22%22Only%20live%20items%22%22%22%0A%20%20%20%20onlyLive%3A%20Bool%20%3D%20null%0A%0A%20%20%20%20%22%22%22%0A%20%20%20%20%3Cp%3EFilters%20to%20be%20applied%20to%20the%20results.%3C%2Fp%3E%0A%20%20%20%20%0A%20%20%20%20%3Cp%3EThe%20following%20%3Ccode%20class%3D%22prettyprint%22%3ECampaign%3C%2Fcode%3E%20fields%20are%20available%20for%20filtering%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cul%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cli%3E%3Ccode%20class%3D%22prettyprint%22%3EexternalId%3C%2Fcode%3E%2C%20operators%3A%0A%20%20%20%20%3Ccode%20class%3D%22prettyprint%22%3EstartsWith%3C%2Fcode%3E%2C%20%3Ccode%0A%20%20%20%20class%3D%22prettyprint%22%3EnotStartsWith%3C%2Fcode%3E%2C%20%3Ccode%0A%20%20%20%20class%3D%22prettyprint%22%3E%3D%3C%2Fcode%3E%2C%20%3Ccode%20class%3D%22prettyprint%22%3E!%3D%3C%2Fcode%3E%2C%20%3Ccode%0A%20%20%20%20class%3D%22prettyprint%22%3E%26lt%3B%26gt%3B%3C%2Fcode%3E%2C%20%3Ccode%20class%3D%22prettyprint%22%3E%26gt%3B%3C%2Fcode%3E%2C%0A%20%20%20%20%3Ccode%20class%3D%22prettyprint%22%3E%26gt%3B%3D%3C%2Fcode%3E%2C%20%3Ccode%0A%20%20%20%20class%3D%22prettyprint%22%3E%3D%26gt%3B%3C%2Fcode%3E%2C%20%3Ccode%20class%3D%22prettyprint%22%3E%26lt%3B%3C%2Fcode%3E%2C%0A%20%20%20%20%3Ccode%20class%3D%22prettyprint%22%3E%26lt%3B%3D%3C%2Fcode%3E%2C%20%3Ccode%0A%20%20%20%20class%3D%22prettyprint%22%3E%3D%26lt%3B%3C%2Fcode%3E%2C%20%3Ccode%0A%20%20%20%20class%3D%22prettyprint%22%3E%26lt%3B%3D%26gt%3B%3C%2Fcode%3E%2C%20%3Ccode%0A%20%20%20%20class%3D%22prettyprint%22%3EisNull%3C%2Fcode%3E%2C%20%3Ccode%0A%20%20%20%20class%3D%22prettyprint%22%3EisNotNull%3C%2Fcode%3E%3C%2Fli%3E

我的模式中缺少什么?

EN

回答 2

Stack Overflow用户

发布于 2019-03-09 04:51:58

如果出现语法错误,很可能是因为模式文件的格式不正确。为您的端点生成自检结果的最简单方法是运行以下命令:

代码语言:javascript
复制
apollo service:download --endpoint=<YOUR_ENDPOINT_URL>

这将在您的工作目录中生成一个schema.json文件。

顺便说一句,为了生成类型定义,您还需要客户端查询。这里有一个article that goes in to more detail,因为这确实超出了您原始问题的范围。完整的命令应该看起来像这样:

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

您可以在the docs上查看所有选项的描述。

票数 0
EN

Stack Overflow用户

发布于 2019-12-16 17:18:54

这是我的脚本:

代码语言:javascript
复制
{
    "types:generate": "apollo codegen:generate  --target=typescript --includes=src/**/*.ts --endpoint **youAPI** --header \"Authorization: Basic cHJvamVjdDpzZWV5b3V3ZWIyMDIw(replace your)\" --tagName=gql --addTypename --outputFlat src/types"
}

我希望它能帮上忙

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

https://stackoverflow.com/questions/55066794

复制
相关文章

相似问题

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