Apollo Graphql 自定义标量 JSON - 抱怨“TypeError:type.getFields 不是函数”
Posted
技术标签:
【中文标题】Apollo Graphql 自定义标量 JSON - 抱怨“TypeError:type.getFields 不是函数”【英文标题】:Apollo Graphql Custom Scalar JSON - complains "TypeError: type.getFields is not a function" 【发布时间】:2017-06-13 15:31:48 【问题描述】:我正在开发一个 apollo-express graphql 服务器。我试图集成模块'graphql-type-json'但是当我关注this description如何集成时,我尝试了很多东西,但似乎类型没有正确传递给解析器 - 但我'我在调试过程中遇到了困难,需要一点帮助。这是我正在做的事情的摘要。
import makeExecutableSchema from 'graphql-tools';
const GraphQLJSON = require('graphql-type-json');
//Have also tried import GraphQLJSON from 'graphql-type-json';
const schema = `
scalar JSON
type Device
deviceconfig: JSON
type Query
foo: Foo
`;
const resolveFunctions =
JSON: GraphQLJSON,
//JSON: return GraphQLJSON stops error but other issues come up...
Query: ...
;
const jsSchema = makeExecutableSchema(
typeDefs: schema,
resolvers: resolveFunctions,
resolverValidationOptions:
requireResolversForNonScalar: false,
,
allowUndefinedInResolve: true,
printErrors: true,
);
不确定是否相关,但我的 npm 存在一些问题:
graphql-type-json@0.1.4
UNMET PEER DEPENDENCY graphql@0.8.2 invalid
├─┬ graphql-tools@0.4.2
│ ├── UNMET PEER DEPENDENCY graphql@^0.5.0 || ^0.6.0
npm ERR! peer dep missing: graphql@^0.6.1 || ^0.7.0, required by apollo-server@0.3.3
npm ERR! peer dep missing: graphql@^0.5.0, required by graphql-tools@0.4.2
npm ERR! extraneous: casual@1.5.8 /home/apollo/node_modules/casual
npm ERR! extraneous: mongoose@4.6.6 /home/apollo/node_modules/mongoose
npm ERR! extraneous: mysql-events@0.0.8 /home/apollo/node_modules/mysql-events
npm ERR! peer dep missing: graphql@^0.5.0 || ^0.6.0, required by express-widgetizer@0.5.11
【问题讨论】:
"(node:5338) UnhandledPromiseRejectionWarning: UnhandledPromiseRejectionWarning: Unhandled Promise Rejection (rejection id: 1): TypeError: type.getFields is not a function" 是我得到的确切警告 我建议升级到最新版本的graphql-tools
和graphql
,并使用最新的graphql-server-express
,这是apollo-server
的新名称。这可能是一些奇怪的依赖关系。
【参考方案1】:
我在解析器中解析了这样的自定义标量 JSON
JSON:
__serialize(value)
return GraphQLJSON.parseValue(value);
它对我来说很好用。我想对你有帮助
【讨论】:
以上是关于Apollo Graphql 自定义标量 JSON - 抱怨“TypeError:type.getFields 不是函数”的主要内容,如果未能解决你的问题,请参考以下文章
在 apollo-server 中将网关上的联合类型转换为服务 GraphQL 中的标量类型
如何在 apollo 的 graphql-gql 中使用从 npm 包导入的自定义 graphQL 类型