Graphql 日期字段类型必须是输出类型但得到:未定义

Posted

技术标签:

【中文标题】Graphql 日期字段类型必须是输出类型但得到:未定义【英文标题】:Graphql date field type must be Output Type but got: undefined 【发布时间】:2017-08-16 15:04:44 【问题描述】:

我有一个使用 node/expres 和 ES6 运行的 graphql 服务器,我正在尝试迁移到 typescript,当我想做 graphql 架构时,我遇到了一些日期类型的问题。我知道 graphql 不包含原生日期类型,但在我的 ES6 实现中,我使用了graphql-date 来提供这个限制。

import 
    GraphQLObjectType,
    GraphQLSchema,
    GraphQLID,
 from 'graphql';

import GraphQLDate from 'graphql-date';

const events = new GraphQLObjectType(
    name: 'events',
    description: 'This represent an Event',
    fields: () => 
        return 
            id: 
                type: GraphQLID,
                resolve(event) 
                    return event.id;
                
            ,
            start: 
                type: GraphQLDate,
                resolve(event) 
                    return event.start;
                
            
        ;
    
);

问题是在我的带有打字稿的项目中,当运行服务器时我收到以下消息:

Error: events.start field type must be Output Type but got: undefined.

【问题讨论】:

我自己解决了问题,GraphqlDate 默认不返回任何导致问题的蚂蚁,如果我导入为 import * as ... 日期类型效果很好 解决方案到底是什么?请分享您的代码 【参考方案1】:

这里的问题是在 TypeScript 中 import Foo from 'foo' 期望模块 'foo' 导出 module.exports.default 属性。 graphql-date 模块改为使用经典的 Node.js 模式覆盖 module.exports

要在 TypeScript 中支持这一点,您可以通过以下方式混合新旧语法:

import GraphQLDate = require('graphql-date');

【讨论】:

以上是关于Graphql 日期字段类型必须是输出类型但得到:未定义的主要内容,如果未能解决你的问题,请参考以下文章

带有 Keystone 的 GraphQL 需要字段类型必须是输出类型,但得到:未定义

带有快速错误的 GraphQL:Query.example 字段类型必须是输出类型,但得到:[object Object]

节点 - GraphQL - Ad.user 字段类型必须是输出类型,但得到:未定义

GraphQL:必须是输出类型,但得到:未定义错误

Edge.node 字段类型必须是输出类型但得到:未定义

错误:Note.user 字段类型必须是输出类型,但得到:[object Object]