首页 > 解决方案 > GraphQLDocumentError:未知类型“Int”

问题描述

我正在尝试遵循 Ben Awad 的 lireddit 教程。

在 6.49,他演示了如何将类型分配给需要覆盖默认预期值的参数。

解析器具有:

@Resolver()
  export class PostResolver {
    @Query(() => [Post])
    async posts(
      @Arg("limit", () => Int) limit: number,
      @Arg("cursor", () => String, { nullable: true }) cursor: string | null
    ): Promise<Post[]> {
      const realLimit = Math.min(50, limit);
      
      const qb = getConnection()
        .getRepository(Post)
        .createQueryBuilder("p")
        .orderBy('"createdAt"', "DESC")
        .take(realLimit)
        
        if (cursor) {
          qb.where('"createdAt" < :cursor',  new Date ( parseInt(cursor)) )
        }
       return qb.getMany();
    }

当我尝试用它生成类型时,它失败了。我收到错误消息:

  1. GraphQLDocumentError:未知类型“Int”。[注意:Int 是从 type-graphql 导入的]
  2. 字段“Query.posts”上的未知参数“光标”。
  3. 字段“Query.posts”上的未知参数“限制”。

任何人都可以帮助如何以允许 graphql 生成类型的格式获取解析器吗?我在这里看到了一些描述使用浮点数而不是整数作为数字的帖子,但我认为这与文档所说的我应该能够实现的目标背道而驰。

Ben 展示了他如何检查 graphql 文档以查找查询对参数类型的期望。我无法从我的文档中获得相同的反馈。

在此处输入图像描述

此示例中,用于限制的 Arg 的定义略有不同,如下所示:

@Arg("limit", type => Int) 限制:数字,

单词“type”似乎没有在任何地方定义,这个用例会生成一个错误,指出“type is declared but not used”。

我现在卡住了,因为我删除了 web 端的 node_modules 和 dist 文件夹,并试图重新运行 yarn。重新安装了 node_modules,但没有重新创建 dist 文件夹(我认为如果我可以成功运行:“graphql-codegen --config codegen.yml”(这是猜测),可能会发生这种情况。

所以现在我无法启动服务器来尝试再次运行该生成器。

标签: graphqltypegraphql

解决方案


我不知道为什么这是必要的或它是如何工作的,但我删除了客户端 node_modules 文件夹和 dist 文件夹。我重新运行 yarn 以重新安装 node_modules (不确定如何重新创建 dist)。我关闭了所有东西,重新启动了 vs 代码工作区并能够生成类型。

这对我来说毫无意义。如果有人有任何技能来寻找这种事情发生的原因,我很想了解发生了什么。


推荐阅读