typeDefs 必须只包含字符串、文档、模式或函数,得到对象

Posted

技术标签:

【中文标题】typeDefs 必须只包含字符串、文档、模式或函数,得到对象【英文标题】:typeDefs must contain only strings, documents, schemas, or functions, got object 【发布时间】:2021-10-28 06:10:12 【问题描述】:

我正在开发一个 express apollo 服务器,并构建了所有 graphql 类型,如下所示:

我正在使用“graphql-tools/load-files”和“graphql-tools/merge”来合并所有类型。我的 index.js 文件就像下面这样:

const path = require('path');
const  loadFilesSync  = require('@graphql-tools/load-files');
const  mergeTypeDefs  = require('@graphql-tools/merge');
const types = loadFilesSync(path.join(__dirname, '.'),  recursive: true )
const typeDefs = mergeTypeDefs(types);
module.exports =  typeDefs ;

当我运行我的项目时,得到以下错误:

Error: typeDefs must contain only strings, documents, schemas, or functions, got object

代码在以前的项目中正常运行。但是当我开始一个新项目删除以前的节点模块和新的 npm 安装时,我遇到了这个奇怪的问题。我怎样才能摆脱它?

【问题讨论】:

【参考方案1】:

我已经找到了问题的解决方案。我不得不删除 recursive: true 并添加 extensions: ['gql'] 。这里是:

const path = require('path');
const  loadFilesSync  = require('@graphql-tools/load-files');
const  mergeTypeDefs  = require('@graphql-tools/merge');
const typesArray = loadFilesSync(path.join(__dirname, '.'),  extensions: ['gql'] );
const typeDefs = mergeTypeDefs(types);
module.exports =  typeDefs ;

【讨论】:

以上是关于typeDefs 必须只包含字符串、文档、模式或函数,得到对象的主要内容,如果未能解决你的问题,请参考以下文章

数据库中的文档是不是必须与模式完全匹配才能填充查询的文档?

数据库中的文档是不是必须与模式完全匹配才能填充查询的文档?

C++ 中 typedef 的前向声明

Typedef和#define之间的区别

typedef详解

typedef的使用3