0

I implemented the DateTime as a nexus method as shown in the docs in my Next.js project.

// types/DateTime.ts
import { GraphQLDate, GraphQLDateTime, GraphQLTime } from 'graphql-iso-date';
import { asNexusMethod } from 'nexus';

export const GQLDate = asNexusMethod(GraphQLDate, 'date');
export const GQLTime = asNexusMethod(GraphQLTime, 'time');
export const GQLDateTime = asNexusMethod(GraphQLDateTime, 'datetime');

The file is also included in the types in GraphQL schema

// Other imports
import * as types from './types';

export const schema = makeSchema({
  types: types,
  // ...
});

However, I am getting following TypeScript error:

Argument of type 'GraphQLScalarType' is not assignable to parameter of type 'GraphQLNamedType'.
  Type 'GraphQLScalarType' is missing the following properties from type 'GraphQLScalarType<unknown, unknown>': specifiedByURL, [Symbol.toStringTag]ts(2345)

How do I resolve this error?

Atharv Kurdukar
  • 115
  • 2
  • 12

1 Answers1

2

I used graphql-scalars and it worked perfectly, as shown here.

import { DateTimeResolver } from 'graphql-scalars';

const DateTime = asNexusMethod(DateTimeResolver, 'datetime');

export const schema = makeSchema({
  types: [
    DateTime,
    /** Queries, mutations, and other scalar types here */
  ],
  /** more config options here */
})

// Inside type file
t.nonNull.datetime('createdAt');

If you are using any linting tool, just make sure that you hit the GraphQL API endpoint after adding the type. Otherwise, it keeps showing the type error in the IDE.

Atharv Kurdukar
  • 115
  • 2
  • 12
  • Following your code, GraphQL API endpoint is working fine. But TypeScript compiler still complains in VSCode. How to make the error disappear? (Testing the endpoint won't solve for me) – Chayanin Feb 10 '23 at 07:06