Typescript 无法从架构粘贴中的另一个schema.graphql文件中的其他schema.graphql文件访问共享架构
我在userSchema.graphql文件中有用户模式Typescript 无法从架构粘贴中的另一个schema.graphql文件中的其他schema.graphql文件访问共享架构,typescript,graphql,apollo-server,graphql-tools,Typescript,Graphql,Apollo Server,Graphql Tools,我在userSchema.graphql文件中有用户模式 id: String! userName: String! email: String! password: String! } 我有不同的schema.graphql文件用于登录和注册 并且我无法访问登录/注册模式中的用户模式 type Query{ hi: String! } type Mutation { register( userName: String!, email: String!, pa
id: String!
userName: String!
email: String!
password: String!
}
我有不同的schema.graphql文件用于登录和注册
并且我无法访问登录/注册模式中的用户模式
type Query{
hi: String!
}
type Mutation {
register( userName: String!, email: String!, password: String! ): User
}
我正在使用graphql工具中的模式粘贴
以及从merge graphql模式包中合并typeDefs和解析器
import "graphql-import-node";
import { GraphQLSchema } from "graphql";
import { mergeResolvers, mergeTypes } from "merge-graphql-schemas";
import * as userSchema from './modules/auth/shared/schema.graphql'
import * as registerTypedefs from "./modules/auth/register/schema.graphql";
import registerResolver from "./modules/auth/register/registerResolver";
import * as todoTypedefs from "./modules/todo/schema.graphql";
import todoResolver from "./modules/todo/todoResolver";
import { makeExecutableSchema } from "graphql-tools";
const schema: GraphQLSchema = makeExecutableSchema({
typeDefs: mergeTypes([userSchema, registerTypedefs, todoTypedefs], { all: true }),
resolvers: mergeResolvers([registerResolver, todoResolver])
});
export default schema;
我发现了错误
Error: Field register: Couldn't find type User in any of the schemas.
at collectNode (E:\graphql\express-apollo-server\node_modules\graphql-import\src\definition.ts:154:15)
at E:\graphql\express-apollo-server\node_modules\graphql-import\src\definition.ts:135:7
at Array.forEach (<anonymous>)
在我的项目中,我使用了requiregraphql文件和lodashmerge,同样的场景也适用于我
import requireGraphQLFile from 'require-graphql-file';
import { merge } from 'lodash';
const $userSchema = requireGraphQLFile('./schema/yourFolder/userSchema.graphql');
const $registerTypedefs= requireGraphQLFile('./schema/yourFolder/register.graphql');
import registerResolver from "./modules/auth/register/registerResolver";
import todoResolver from "./modules/todo/todoResolver";
const schema: GraphQLSchema = makeExecutableSchema({
typeDefs: [$userSchema,
$registerTypedefs,
todoTypedefs
],
resolvers: merge(registerResolver, todoResolver)
});
希望这会有所帮助。我正在使用typescript,但它的@types不存在。所以它不起作用。
const schema: GraphQLSchema = makeExecutableSchema({
typeDefs: mergeTypes(typesArray, { all: true }),
resolvers: mergeResolvers([registerResolver, loginRegister, todoResolver, storyResolver])
});
import requireGraphQLFile from 'require-graphql-file';
import { merge } from 'lodash';
const $userSchema = requireGraphQLFile('./schema/yourFolder/userSchema.graphql');
const $registerTypedefs= requireGraphQLFile('./schema/yourFolder/register.graphql');
import registerResolver from "./modules/auth/register/registerResolver";
import todoResolver from "./modules/todo/todoResolver";
const schema: GraphQLSchema = makeExecutableSchema({
typeDefs: [$userSchema,
$registerTypedefs,
todoTypedefs
],
resolvers: merge(registerResolver, todoResolver)
});