Jacob
Jacob

Reputation: 1578

NestJS 5 GraphQL Error Query defined in resolvers, but not in schema

I'm getting an error similar to the error described in Query.products is defined in resolvers but not in schema but only when I push to Heroku. Here are the details:

// profile.graphql
type Profile {
  id: ID!
  version: String!
  // ...
}

type Query {
  profile(id: ID!): Profile
  profiles: [Profile]
}
// profiles.resolver.ts
import { Args, Query, Resolver } from '@nestjs/graphql'
import { Profile } from './profile.entity'

@Resolver('Profile')
export class ProfileResolver {
  @Query()
  public async profile(@Args('id') id: number) {
    return await Profile.findOne(id)
  }

  @Query()
  public async profiles() {
    return await Profile.find()
  }
}

Locally, I can run yarn start:dev and it works great. The application starts successfully and I can query my GraphQL endpoint without a problem.

When I push this to Heroku, the application never starts up.

2019-04-03T15:42:38.102056+00:00 heroku[web.1]: Starting process with command `node dist/main.js`
2019-04-03T15:42:42.448420+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [NestFactory] Starting Nest application...
2019-04-03T15:42:42.499150+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] ConfigModule dependencies initialized +51ms
2019-04-03T15:42:42.499439+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] TypeormConfigModule dependencies initialized +0ms
2019-04-03T15:42:42.499805+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] TypeOrmModule dependencies initialized +0ms
2019-04-03T15:42:42.500251+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] ApiModule dependencies initialized +1ms
2019-04-03T15:42:42.500726+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] PassportModule dependencies initialized +0ms
2019-04-03T15:42:42.501201+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] DataModule dependencies initialized +1ms
2019-04-03T15:42:42.501651+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] GqlConfigModule dependencies initialized +0ms
2019-04-03T15:42:42.502039+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] EntitiesModule dependencies initialized +0ms
2019-04-03T15:42:42.502411+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] UsersModule dependencies initialized +0ms
2019-04-03T15:42:42.502819+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] HelpersModule dependencies initialized +0ms
2019-04-03T15:42:42.503246+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] ProfilesModule dependencies initialized +1ms
2019-04-03T15:42:42.503676+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] ResourceTypesModule dependencies initialized +0ms
2019-04-03T15:42:42.504107+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] SchemaMappingsModule dependencies initialized +1ms
2019-04-03T15:42:42.504580+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] SearchReplaceValuesModule dependencies initialized +0ms
2019-04-03T15:42:42.505006+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] XpathExpressionsModule dependencies initialized +0ms
2019-04-03T15:42:42.505581+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] JwtModule dependencies initialized +1ms
2019-04-03T15:42:42.550301+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] AppModule dependencies initialized +45ms
2019-04-03T15:42:42.553207+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] GraphQLModule dependencies initialized +3ms
2019-04-03T15:42:42.553861+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] AuthModule dependencies initialized +0ms
2019-04-03T15:42:42.674522+00:00 app[web.1]: query: SELECT * FROM "information_schema"."tables" WHERE "table_schema" = current_schema() AND "table_name" = 'migrations'
2019-04-03T15:42:42.690182+00:00 app[web.1]: query: SELECT * FROM "migrations" "migrations"
2019-04-03T15:42:42.693584+00:00 app[web.1]: No migrations are pending
2019-04-03T15:42:42.696083+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [InstanceLoader] TypeOrmCoreModule dependencies initialized +142ms
2019-04-03T15:42:42.734620+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [RoutesResolver] AppController {/}: +35ms
2019-04-03T15:42:42.735243+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [RouterExplorer] Mapped {/, GET} route +4ms
2019-04-03T15:42:42.735665+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [RoutesResolver] AuthController {/auth}: +0ms
2019-04-03T15:42:42.737212+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [RouterExplorer] Mapped {/register, POST} route +2ms
2019-04-03T15:42:42.739125+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [RouterExplorer] Mapped {/login, POST} route +0ms
2019-04-03T15:42:42.739137+00:00 app[web.1]: [Nest] 4   - 4/3/2019, 3:42:42 PM   [RouterExplorer] Mapped {/refresh, POST} route +0ms
2019-04-03T15:42:42.849522+00:00 app[web.1]: (node:4) UnhandledPromiseRejectionWarning: Error: Query.profile defined in resolvers, but not in schema

Why do I get the error in production and not in development? What is happening that makes the GraphQL schema not register my profile query?

Upvotes: 1

Views: 2188

Answers (1)

Jacob
Jacob

Reputation: 1578

The difference between local and prod lends itself to Typescript. I found out that none of the .graphql files were being copied by Typescript so I used copyfiles to solve the issue after my dist folder was created.

Upvotes: 3

Related Questions