1

我有一个运行 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.
4

1 回答 1

1

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

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

import GraphQLDate = require('graphql-date');
于 2017-07-18T16:13:38.950 回答