Error: Schema must contain uniquely named types but contains multiple types named "n"

Viewed 294

I'm running into this error and I have no idea how to debug this. When I run it in dev mode by running yarn nx serve app, it works fine. It's when I build and deploy the prod docker version, I get this error:

    (node:7) UnhandledPromiseRejectionWarning: Error: Schema must contain uniquely named 
    types but contains multiple types named "n".
    2022-01-07T02:40:36.831174844Z     at new GraphQLSchema (/app/node_modules/graphql/type/schema.js:194:15)
    2022-01-07T02:40:36.831182778Z     at GraphQLSchemaFactory.create (/app/node_modules/@nestjs/graphql/dist/schema-builder/graphql-schema.factory.js:39:24)
    2022-01-07T02:40:36.831188556Z     at GraphQLSchemaBuilder.buildSchema (/app/node_modules/@nestjs/graphql/dist/graphql-schema.builder.js:62:52)
    2022-01-07T02:40:36.831193705Z     at GraphQLSchemaBuilder.build (/app/node_modules/@nestjs/graphql/dist/graphql-schema.builder.js:24:31)
    2022-01-07T02:40:36.831199146Z     at GraphQLFactory.mergeOptions (/app/node_modules/@nestjs/graphql/dist/graphql.factory.js:33:69)
    2022-01-07T02:40:36.831204965Z     at GraphQLModule.onModuleInit (/app/node_modules/@nestjs/graphql/dist/graphql.module.js:92:57)
    2022-01-07T02:40:36.831210371Z     at processTicksAndRejections (internal/process/task_queues.js:95:5)
    2022-01-07T02:40:36.831215501Z     at async Object.callModuleInitHook (/app/node_modules/@nestjs/core/hooks/on-module-init.hook.js:51:9)
    2022-01-07T02:40:36.831220535Z     at async NestApplication.callInitHook (/app/node_modules/@nestjs/core/nest-application-context.js:179:13)
    2022-01-07T02:40:36.831225861Z     at async NestApplication.init (/app/node_modules/@nestjs/core/nest-application.js:96:9)
    2022-01-07T02:40:36.831231456Z (Use `node --trace-warnings ...` to show where the warning was created)
(node:7) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
2022-01-07T02:40:36.831243405Z (node:7) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

I've looked all over other the codebase and I'm not seeing duplicate data. And it's not failing in dev mode and only in production mode as well. I've been stuck trying to figure this out for a while now. Any help would be greatly appreciated.

# ------------------------------------------------------
# THIS FILE WAS AUTOMATICALLY GENERATED (DO NOT MODIFY)
# ------------------------------------------------------

type AdditionalOptionModel {
  activated: String
  id: Float
  notice_period_days: Float
  product_identifier: String
  scheduled_deactivation_date: String
}

type AdditionalOptionsServerResponseModel {
  additional_options: [AdditionalOptionModel!]
}

input Address {
  city: String
  country: String
  line1: String
  line2: String
  state: String
  zip: String
}

type BackupModel {
  built: Boolean
  built_at: String
  created: String
  disk: DiskModel
  id: Float
  locked: Boolean
  size: String
}

type BackupScheduleModel {
  created: String
  disk: DiskModel
  duration: String
  id: Float
  period: String
  rotation_period: Boolean
  start_time: String
  status: String
}

input ContactInput {
  email: String!
  message: String!
  name: String!
  phone: String!
}

type CreateServerResponseModel {
  server: ServerDetailModel
  servers: [ServerDetailModel!]
}

input CreateVpsServerInput {
  addition_options: [String!]
  hostname: String
  hostnames: [String!]
  location: String!
  product: String!
  recipe: Float
  template: String
}

type DiskModel {
  built: Boolean
  id: Float
  is_primary: Boolean
  label: String
  size: Float
}

type ExampleProductDataModel {
  bandwidth: Float
  cpu: Float
  disk: Float
  memory: Float
}

input GuideInput {
  email: String!
  name: String!
}

type IPAddressModel {
  address: String
  created: String
  gateway: String
  id: Float
  is_ipv6: Boolean
  type: String
}

type LinksModel {
  pages: PagesModel
}

type LocationModel {
  id: Float
  identifier: String
  is_under_maintenance: Boolean
  name: String
  on_hold: Boolean
}

type MetaModel {
  pages: Float
  total: Float
}

type Mutation {
  addAdditionalOptions(apiKey: String!, options: [String!]!, serverId: Int!): Boolean!
  addUser(user: User!): UserModel!
  cancelSubscription(email: String!): Boolean!
  changeHostname(apiKey: String!, hostname: String!, serverId: Int!): Boolean!
  changeLabel(apiKey: String!, label: String!, serverId: Int!): Boolean!
  changePassword(apiKey: String!, password: String!, serverId: Int!): Boolean!
  createMailingSubscription(subscriber: SubscriberInput!): Boolean!
  createServer(apiKey: String!, server: CreateVpsServerInput!): CreateServerResponseModel!
  delete(apiKey: String!, serverId: Int!): Boolean!
  deleteVpsConfig(id: Int!): Boolean!
  disableAdditionalOptions(apiKey: String!, options: [String!]!, serverId: Int!): Boolean!
  paymentIntent(paymentMethod: PaymentMethod!): String!
  performCommand(apiKey: String!, command: String!, serverId: Int!): Boolean!
  resize(apiKey: String!, product: String!, serverId: Int!): Boolean!
  saveVpsConfig(config: VpsConfig!): VpsConfigModel!
  send(contact: ContactInput!): Boolean!
  sendGuide(guide: GuideInput!): Boolean!
  subscribe(payment: Payment!): Boolean!
  updateApiKey(email: String!): String!
  updateProfile(user: User!): UserModel!
}

type PagesModel {
  first: String
  last: String
  next: String
  prev: String
}

input Payment {
  address: Address
  email: String!
  name: String!
  paymentIntent: String!
  phone: String!
  type: String!
}

input PaymentMethod {
  amount: Float!
  email: String!
  name: String!
  phone: String!
}

type ProductDetailsModel {
  category: String
  details: ExampleProductDataModel
  id: String
  identifier: String
  is_sub_category: Boolean
  name: String
  parent_category: String
  price: Float
  state: String
  type: ProductTypeModel
}

type ProductModel {
  id: Float
  identifier: String
  name: String
  price: Float
  type: ProductTypeModel
}

type ProductTypeModel {
  id: Float
  identifier: String
  name: String
}

type Query {
  additionalOptions(apiKey: String!, serverId: Int!): AdditionalOptionsServerResponseModel!
  getApiKey(email: String!): String!
  getRecipes(apiKey: String!, page: Int): RecipesResponseModel!
  getTemplateDetails(apiKey: String!, templateId: Int!): TemplateDetailsResponseModel!
  getTemplates(apiKey: String!, group: String!): TemplatesResponseModel!
  server(apiKey: String!, serverId: Int!): ServerDetailModel!
  servers(apiKeys: [String!]!): [ServerDetailModel!]!
  settings: SiteSettingsModel!
  user(email: String!): UserModel!
  validate(registration: Registration!): Boolean!
  vpsConfigs(email: String!): [VpsConfigModel!]!
}

type RecipeModel {
  created: String
  id: Float
  modified: String
  name: String
  os_type: String
  recipe_type: RecipeTypeModel
  script: String
  script_type: String
}

type RecipeTypeModel {
  id: Float
  name: String
}

type RecipesResponseModel {
  links: LinksModel
  meta: MetaModel
  recipes: [RecipeModel!]
}

input Registration {
  email: String
  key: Float
}

type ServerDetailModel {
  bandwidth_total: Float
  bandwidth_used: Float
  cpu: Float
  created: String
  detailed_state: String
  disabled: String
  disk: Float
  hostname: String
  id: String
  initial_root_password: String
  ip_addresses: [IPAddressModel!]
  label: String
  location: LocationModel
  locked: String
  main_ip_address: String
  memory: Float
  name: String
  product: ProductModel
  scheduled_delete_date: String
  state: String
  template: TemplateModel
}

type SiteSettingsModel {
  skipGuideForm: Boolean!
}

input SubscriberInput {
  email: String!
  name: String!
}

type TemplateDetailsModel {
  group: String
  locations: [LocationModel!]
  name: String
  price: Float
  product_prices: [TemplateProductPriceModel!]
  products: [ProductModel!]
  system_name: String
}

type TemplateDetailsResponseModel {
  template: TemplateDetailsModel
}

type TemplateModel {
  group: String
  id: String
  name: String
  price: String
  product_prices: [TemplateProductPriceModel!]
  system_name: String
}

type TemplateProductPriceModel {
  price: Float
  product: String
}

type TemplateTabModel {
  id: Float
  label: String
  sort: String
}

type TemplatesResponseModel {
  links: LinksModel
  meta: MetaModel
  templates: [TemplateModel!]
}

input User {
  apiKey: String
  email: String
  firstName: String
  id: String
  lastName: String
  originalEmail: String
  password: String
  phone: String
  username: String
}

type UserModel {
  apiKey: String
  email: String
  firstName: String
  id: String
  lastName: String
  originalEmail: String
  password: String
  phone: String
  username: String
}

input VpsConfig {
  apiKey: String!
  email: String
  id: Float
  name: String!
}

type VpsConfigModel {
  apiKey: String!
  email: String
  id: Float
  name: String!
}
1 Answers
Related