GraphQL 抛出语法错误

我正在开发 GraphQL 节点教程,并且已完成第 7 步。


https://www.howtographql.com/graphql-js/7-subscriptions/


我从我的datamodel.prisma文件中的这段代码中得到了一些语法错误:


directive @id on FIELD_DEFINITION

directive @unique on FIELD_DEFINITION

directive @createdAt on FIELD_DEFINITION

scalar DateTime


type Link {

    id: ID! @id

    createdAt: DateTime! @createdAt

    description: String!

    url: String!

    postedBy: User

    votes: [Vote!]!

}


type User {

    id: ID! @id

    name: String!

    email: String! @unique

    password: String!

    links: [Link!]!

    votes: [Vote!]!

}


type Vote {

    id: ID! @id

    link: Link!

    user: User!

}

但我仍然得到'User' type [@6:1] tried to redefine existing 'User' type [@15:5]和'Link' type [@24:1] tried to redefine existing 'Link' type [@6:5]。


我也不确定我是否声明directives或scalars正确,因为官方教程中缺少这一点。


任何人都可以就如何对这些问题进行排序提供任何建议吗?


Schema.graphql:


type Query {

    info: String!

    feed(filter: String, skip: Int, first: Int, orderBy: LinkOrderByInput): Feed!

}


type Feed {

    links: [Link!]!

    count: Int!

}


type AuthPayload {

    token: String

    user: User

}


type User {

    id: ID!

    name: String!

    email: String!

    links: [Link!]!

}


type Vote {

    id: ID!

    link: Link!

    user: User!

}


type Link {

    id: ID!

    description: String!

    url: String!

    postedBy: User

    votes: [Vote!]!

}


type Subscription {

    newLink: Link

    newVote: Vote

}


type Mutation {

    post(url: String!, description: String!): Link!

    signup(email: String!, password: String!, name: String!): AuthPayload

    login(email: String!, password: String!): AuthPayload

    vote(linkId: ID!): Vote

}


enum LinkOrderByInput {

    description_ASC

    description_DESC

    url_ASC

    url_DESC

    createdAt_ASC

    createdAt_DESC

}


偶然的你
浏览 404回答 2
2回答

繁星coding

今天早上我遇到了同样的错误,我觉得这与缓存有关。当我重命名变量时它消失了。在您的情况下,将所有“链接”定义/引用更改为“LinkTwo”并查看错误是否消失。与“用户”相同...将其更改为“用户二”。如果是这样,也许您可以稍后将它们重命名。

函数式编程

我之前没有使用过 Prisma,只是看了一眼教程,但看起来您正在定义两种 User 类型;您在 datamodel.prisma 和 Schema.graphql 中有一个(我在教程中找不到 User 的两个定义)。如果它们被读入同一个实例,这就是为什么 graphql 认为您正在尝试重新定义 User 类型的原因。删除一个,或者如果适用,将第二个更改为extend type User应该可以解决语法错误。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript