我有一个运行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;
}
}
};
}
});
问题在于,在运行服务器时使用typescript的项目中,我收到了以下消息:
Error: events.start field type must be Output Type but got: undefined.
答案 0 :(得分:1)
这里的问题是,在TypeScript import Foo from 'foo'
期望模块' foo'导出module.exports.default
属性。相反,graphql-date
模块执行覆盖module.exports
的经典Node.js模式。
要在TypeScript中支持此功能,您可以通过以下方式混合使用旧语法和新语法:
import GraphQLDate = require('graphql-date');