为了账号安全,请及时绑定邮箱和手机立即绑定

GraphQL 抛出语法错误

GraphQL 抛出语法错误

偶然的你 2021-07-06 13:11:55
我正在开发 GraphQL 节点教程,并且已完成第 7 步。https://www.howtographql.com/graphql-js/7-subscriptions/我从我的datamodel.prisma文件中的这段代码中得到了一些语法错误:directive @id on FIELD_DEFINITIONdirective @unique on FIELD_DEFINITIONdirective @createdAt on FIELD_DEFINITIONscalar DateTimetype 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}
查看完整描述

2 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

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


查看完整回答
反对 回复 2021-07-08
?
函数式编程

TA贡献1807条经验 获得超9个赞

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


查看完整回答
反对 回复 2021-07-08
  • 2 回答
  • 0 关注
  • 403 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信