无法从 apollo-server-express 导入 SchemaDirectiveVisitor

Posted

技术标签:

【中文标题】无法从 apollo-server-express 导入 SchemaDirectiveVisitor【英文标题】:Unable to import SchemaDirectiveVisitor from apollo-server-express 【发布时间】:2021-10-01 21:30:49 【问题描述】:
const  SchemaDirectiveVisitor  = require('apollo-server-express');

class ReplaceDirective extends SchemaDirectiveVisitor 
visitFieldDefinition(field) 
    const  replacement  = this.args;
    field.resolve = () => 
        return replacement
    



module.exports = Object.freeze( ReplaceDirective )

我得到的错误如下 TypeError: Class extends value undefined is not a constructor or null

【问题讨论】:

【参考方案1】:

查看apollo-server/packages/apollo-server-express/src/index.ts,该功能未公开。

SchemaDirectiveVisitor 是 graphql-tools 的遗留函数。

apollo-server-express@2.X.X (last v2.25.2) 使用过graphql-tools 4.0.8 它仍然具有该功能。

您需要固定到apollo-server-expressv2 版本才能使用该功能。

【讨论】:

谢谢 Manny,但我想坚持使用最新版本。如何在最新版本中制作自定义指令。【参考方案2】:

他们摆脱了 SchemaDirectiveVisitor 并添加了两个新函数来简化:mapSchemagetDirectives

来源: https://www.the-guild.dev/blog/graphql-tools-v6 然后滚动到以下标题。 使用指令修改模式

【讨论】:

以上是关于无法从 apollo-server-express 导入 SchemaDirectiveVisitor的主要内容,如果未能解决你的问题,请参考以下文章

zeit-now v2 + apollo-server-express:操场错误:无法访问服务器

使用 Apollo-Server-Express 从服务器中使用光标分页查询 REST API

在 apollo-server-express 中增加身体限制大小

使用 apollo-server-express 迁移到 3.5.0

graphql + apollo-server-express,如何处理 express authMiddleware 中的身份验证错误?

res.cookie 不适用于 apollo-server-express