GraphQL Nexus Schema (nexusjs) 不使用标量类型进行编译

GraphQL Nexus Schema (nexusjs) doesn't compile with scalar types

我正在尝试关注 documentation on the Nexus-Schema (nexusjs) 网站以将标量类型添加到我的 GraphQL 应用程序。

我尝试使用文档中提供的示例和交互式示例将许多不同的实现添加到我的 src/types/Types.ts 文件中。我的尝试包括:

没有第三方库:

const DateScalar = scalarType({
  name: 'Date',
  asNexusMethod: 'date',
  description: 'Date custom scalar type',
  parseValue(value) {
    return new Date(value)
  },
  serialize(value) {
    return value.getTime()
  },
  parseLiteral(ast) {
    if (ast.kind === Kind.INT) {
      return new Date(ast.value)
    }
    return null
  },
})

使用 graphql-iso-date 第 3 方库:

import { GraphQLDate } from 'graphql-iso-date'
export const DateTime = GraphQLDate

使用graphql-scalars第3方库(如ghost example所示):

export const GQLDate = decorateType(GraphQLDate, {
  rootTyping: 'Date',
  asNexusMethod: 'date',
})

我在对象定义中使用这个新的标量类型,如下所示:

const SomeObject = objectType({
  name: 'SomeObject',
  definition(t) {
    t.date('createdAt') // t.date() is supposed to be available because of `asNexusMethod`
  },
})

在所有情况下,这些类型都从类型文件中导出并导入到 makeSchematypes 属性.

import * as types from './types/Types'

console.log("Found types", types)

export const apollo = new ApolloServer({
    schema: makeSchema({
        types,
        ...
    context:()=>(
        ...
    })
})

上面的 console.log 语句确实表明类型文件中声明的 consts 在范围内:

Found types { 
  GQLDate: Date,
  ...
}

如果我 运行 应用程序处于开发模式,一切都会启动并且 运行 没问题。

ts-node-dev --transpile-only ./src/app.ts

但是,每当我尝试编译应用程序以部署到服务器时遇到错误

ts-node ./src/app.ts && tsc

注意:此错误发生在 运行ning 刚好 ts-node ./src/app.ts 到达 tsc

之前

构建过程中显示的错误如下:

/Users/user/checkouts/project/node_modules/ts-node/src/index.ts:500
    return new TSError(diagnosticText, diagnosticCodes)
           ^
TSError: ⨯ Unable to compile TypeScript:
src/types/SomeObject.ts:11:7 - error TS2339: Property 'date' does not exist on type 'ObjectDefinitionBlock<"SomeObject">'.

11     t.date('createdAt')

有没有人对此有任何想法:

非常欢迎任何帮助。谢谢!

--transpile-only 标志添加到 nexus:reflect 命令后,问题似乎已解决。

这意味着反射命令更新为:

ts-node --transpile-only ./src/app.ts

构建命令更新为:

env-cmd -f ./config/.env ts-node --transpile-only ./src/app.ts --nexusTypegen && tsc 

还创建了一个 github 问题,可以在此处查看:https://github.com/graphql-nexus/schema/issues/690