TypeGraphQL的buildSchema方法是否仍支持validate配置项?
问题原因与解决方案
核心原因
- 版本不兼容:Ben Awad的lireddit教程使用的是TypeGraphQL 1.x版本,
validate属于buildSchema的根级别合法配置项;如果你安装的是2.x及以上的TypeGraphQL版本,该配置项已从根配置中移除,类型定义因此报错。 - 依赖缺失:TypeGraphQL的校验功能依赖
class-validator包,未安装该依赖时,相关配置项的类型定义会被自动隐藏,也会触发该报错。
修复方案
方案1:和教程版本保持一致(推荐)
- 安装1.x分支的TypeGraphQL版本:
npm install type-graphql@1.x
- 安装配套的校验依赖:
npm install class-validator
- 修正你代码中的ApolloServer初始化语法错误,完整可运行代码如下:
const schema = await buildSchema({ resolvers: [HelloResolver, PostResolver, UserResolver], validate: false }) const apolloServer = new ApolloServer({ schema, // 注意MikroORM要求每个请求使用独立的EntityManager实例,必须调用fork方法 context: ({ req, res }) => ({ em: orm.em.fork(), req, res }) })
方案2:使用2.x及以上TypeGraphQL版本无需降级
将根配置的validate: false调整到resolverValidationOptions配置项内即可:
const schema = await buildSchema({ resolvers: [HelloResolver, PostResolver, UserResolver], resolverValidationOptions: { validate: false } })
内容的提问来源于stack exchange,提问作者Mel
相关产品推荐
相关产品推荐

