【发布时间】:2020-05-22 18:38:04
【问题描述】:
我是 GraphQL 的新手。我正在尝试将 schema.sql 文件拆分为多个文件。
第一个问题,这是用 GraphQL 做事的标准方式吗(例如,Query.graphql、Mutation.graphql、TypeA.graphql 等)
其次,我认为 typeDefs 中的参数(用于 graphql-yoga)允许我为所有模式文件传递位置数组,但它对我不起作用(请参阅下面的代码以了解我遇到的错误.
这是我的主 index.js 文件中的代码:
import { graphQLServer, GraphQLServer } from 'graphql-yoga';
import db from '../database/db';
import Query from './resolvers/Query';
import Mutation from './resolvers/Mutation';
import Post from './resolvers/Post';
import User from './resolvers/User';
import Comment from './resolvers/Comment';
const typeDefs = [
'./schemas/query.graphql',
'./schemas/mutation.graphql',
'./schemas/user.graphql'
];
const server = new GraphQLServer({
typeDefs: typeDefs,
context: { db },
resolvers: { Query, Mutation, Post, User, Comment }
});
server.start(()=> {
console.log("Server started on localhost:4000!");
});
这是我得到的错误:
Error: Field createUser: Couldn't find type User in any of the schemas.
at collectNode (C:\Websites\Learning-GraphQL - Local Copy\graphql-bootcamp\graphql-basics\node_modules\graphql-import\src\definition.ts:154:15)
at C:\Websites\Learning-GraphQL - Local Copy\graphql-bootcamp\graphql-basics\node_modules\graphql-import\src\definition.ts:135:7
at Array.forEach (<anonymous>)
at collectNewTypeDefinitions (C:\Websites\Learning-GraphQL - Local Copy\graphql-bootcamp\graphql-basics\node_modules\graphql-import\src\definition.ts:134:26)
at Object.completeDefinitionPool (C:\Websites\Learning-GraphQL - Local Copy\graphql-bootcamp\graphql-basics\node_modules\graphql-import\src\definition.ts:49:39)
at Object.importSchema (C:\Websites\Learning-GraphQL - Local Copy\graphql-bootcamp\graphql-basics\node_modules\graphql-import\src\index.ts:127:18)
at mergeTypeDefs (C:\Websites\Learning-GraphQL - Local Copy\graphql-bootcamp\graphql-basics\node_modules\graphql-yoga\src\index.ts:456:14)
at C:\Websites\Learning-GraphQL - Local Copy\graphql-bootcamp\graphql-basics\node_modules\graphql-yoga\src\index.ts:472:32
at Array.reduce (<anonymous>)
at mergeTypeDefs (C:\Websites\Learning-GraphQL - Local Copy\graphql-bootcamp\graphql-basics\node_modules\graphql-yoga\src\index.ts:471:21)
如您所见,它说它找不到我的一种类型(用户),但我确实在 User.graphql 模式文件中找到了它。当我将所有内容都放在一个文件中并将该文件仅作为 typeDefs 传递时,它可以正常工作。提前感谢您的帮助!
【问题讨论】:
-
说某事不起作用并不是特别有用——如果您看到错误,您应该编辑您的问题以包含完整的错误消息。传入路径数组应该可以正常工作,但您可能需要绝对文件路径,而不是相对路径,因为您的代码已编译。
-
很抱歉。我是堆栈溢出的新手。我添加了更多细节。我尝试了绝对路径,但仍然失败并出现上面列出的错误。
标签: javascript graphql