Error when building typedefs TypeError: Cannot read property 'some' of undefined
Error when building typedefs TypeError: Cannot read property 'some' of undefined
在 Apollo Server 中构建 Typedef 时出现以下错误:
return typeDef.definitions.some(definition => definition.kind === language_1.Kind.DIRECTIVE_DEFINITION &&
^
TypeError: Cannot read property 'some' of undefined
我尝试遵循此处的一些解决方案https://github.com/apollographql/apollo-server/issues/2961,但我仍然遇到错误。
这就是我创建架构的方式:
fs.readdirSync(__dirname)
.filter(dir => { console.log('dir', dir); return dir.indexOf('.') < 0 })
.forEach((dir) => {
const tmp = require(path.join(__dirname, dir)).default;
resolvers = merge(resolvers, tmp.resolvers);
typeDefs.push(tmp.types);
});
const schema = new ApolloServer({
typeDefs,
resolvers,
playground: {
endpoint: '/graphql',
settings: {
'editor.theme': 'light'
}
}
});
type.js
const Book = gql`
type Book {
title: String!
author: String!
}
`;
export const types = () => [Book];
export const typeResolvers = {
};
mutation.js
const Mutation = gql`
extend type Mutation {
addBook(book: BookInput): Book
}
`;
export const mutationTypes = () => [Mutation];
export const mutationResolvers = {
Mutation: {
addBook: async (_, args, ctx) => {
return []
}
}
};
index.js
export default {
types: () => [types, queryTypes, inputTypes, mutationTypes],
resolvers: Object.assign(queryResolvers, mutationResolvers, typeResolvers),
};
有什么建议吗?我可能缺少什么?
花了一些时间进行更改后,我终于找到了一个可行的解决方案。
我必须确保 typeDefs
是一个 GraphQL 文档数组,而不是 [Function: types]
的一种类型。为此,我删除了不必要的函数语法。
例如:
我用这个 export const types = Book;
替换了这个 export const types = () => [Book];
我用 types: [types, queryTypes, inputTypes, mutationTypes]
替换了这个 types: () => [types, queryTypes, inputTypes, mutationTypes]
... 几乎每个地方我都有 () =>
最后,在实例化 ApolloServer
之前,我没有将 tmp.types
推入类型数组,而是使用 concat
来使用我定义的当前文件中所有已定义的 graphql 类型'plus' 每个目录导入的graphql类型
typeDefs = typeDefs.concat(tmp.types);
过去 2 小时我遇到了同样的问题。我意识到我正在实例化我的 apollo 服务器的文件在创建 typedef 之前正在执行。
对此进行测试的简单方法是在执行 const schema = new ApolloServer({ ...
之前创建一个 console.log(types, queryTypes, inputTypes, mutationTypes)
。
其中一个未定义。谢谢
在 Apollo Server 中构建 Typedef 时出现以下错误:
return typeDef.definitions.some(definition => definition.kind === language_1.Kind.DIRECTIVE_DEFINITION &&
^
TypeError: Cannot read property 'some' of undefined
我尝试遵循此处的一些解决方案https://github.com/apollographql/apollo-server/issues/2961,但我仍然遇到错误。
这就是我创建架构的方式:
fs.readdirSync(__dirname)
.filter(dir => { console.log('dir', dir); return dir.indexOf('.') < 0 })
.forEach((dir) => {
const tmp = require(path.join(__dirname, dir)).default;
resolvers = merge(resolvers, tmp.resolvers);
typeDefs.push(tmp.types);
});
const schema = new ApolloServer({
typeDefs,
resolvers,
playground: {
endpoint: '/graphql',
settings: {
'editor.theme': 'light'
}
}
});
type.js
const Book = gql`
type Book {
title: String!
author: String!
}
`;
export const types = () => [Book];
export const typeResolvers = {
};
mutation.js
const Mutation = gql`
extend type Mutation {
addBook(book: BookInput): Book
}
`;
export const mutationTypes = () => [Mutation];
export const mutationResolvers = {
Mutation: {
addBook: async (_, args, ctx) => {
return []
}
}
};
index.js
export default {
types: () => [types, queryTypes, inputTypes, mutationTypes],
resolvers: Object.assign(queryResolvers, mutationResolvers, typeResolvers),
};
有什么建议吗?我可能缺少什么?
花了一些时间进行更改后,我终于找到了一个可行的解决方案。
我必须确保 typeDefs
是一个 GraphQL 文档数组,而不是 [Function: types]
的一种类型。为此,我删除了不必要的函数语法。
例如:
我用这个 export const types = Book;
export const types = () => [Book];
我用 types: [types, queryTypes, inputTypes, mutationTypes]
types: () => [types, queryTypes, inputTypes, mutationTypes]
... 几乎每个地方我都有 () =>
最后,在实例化 ApolloServer
之前,我没有将 tmp.types
推入类型数组,而是使用 concat
来使用我定义的当前文件中所有已定义的 graphql 类型'plus' 每个目录导入的graphql类型
typeDefs = typeDefs.concat(tmp.types);
过去 2 小时我遇到了同样的问题。我意识到我正在实例化我的 apollo 服务器的文件在创建 typedef 之前正在执行。
对此进行测试的简单方法是在执行 const schema = new ApolloServer({ ...
之前创建一个 console.log(types, queryTypes, inputTypes, mutationTypes)
。
其中一个未定义。谢谢