GraphQL Code Generator - Невозможно загрузить мою схему GQL из конечной точки сервера Nest js - PullRequest
1 голос
/ 05 марта 2020

Я использую генератор кода GraphQL в приложении angular и пытаюсь загрузить свою схему из локального приложения js.

Вот коден .yml file:

schema: http://localhost:3000/graphql
documents: ./src/app/graphql/**/*.graphql
generates:
  ./src/app/graphql/types.ts:
    plugins:
      - typescript
      - typescript-operations
      - typescript-apollo-angular

Когда я запускаю graphql-codegen, я получаю следующую ошибку:

 Failed to load schema from http://localhost:3000/graphql:

        invalid json response body at http://localhost:3000/graphql reason: Unexpected token < in JSON at position 0
        FetchError: invalid json response body at http://localhost:3000/graphql reason: Unexpected token < in JSON at position 0
    at C:\ngWishList2\node_modules\node-fetch\lib\index.js:271:32
    at processTicksAndRejections (internal/process/task_queues.js:94:5)
    at async UrlLoader.load (C:\ngWishList2\node_modules\@graphql-toolkit\url-loader\index.cjs.js:87:22)
    at async C:\ngWishList2\node_modules\@graphql-toolkit\core\index.cjs.js:682:25        
    at async Promise.all (index 5)
    at async loadSingleFile (C:\ngWishList2\node_modules\@graphql-toolkit\core\index.cjs.js:678:5)
    at async C:\ngWishList2\node_modules\@graphql-toolkit\core\index.cjs.js:556:38        
    at async Promise.all (index 0)
    at async loadTypedefs (C:\ngWishList2\node_modules\@graphql-toolkit\core\index.cjs.js:620:5)
    at async Object.loadSchema (C:\ngWishList2\node_modules\@graphql-toolkit\core\index.cjs.js:705:21)
    at async loadSchema (C:\ngWishList2\node_modules\@graphql-codegen\cli\bin.js:342:24)  
    at async C:\ngWishList2\node_modules\@graphql-codegen\cli\bin.js:704:55
    at async Task.task (C:\ngWishList2\node_modules\@graphql-codegen\cli\bin.js:567:17)   

        GraphQL Code Generator supports:
          - ES Modules and CommonJS exports (export as default or named export "schema")  
          - Introspection JSON File
          - URL of GraphQL endpoint
          - Multiple files with type definitions (glob expression)
          - String in config file

        Try to use one of above options and run codegen again.
    Error: Failed to load schema
        at loadSchema (C:\ngWishList2\node_modules\@graphql-codegen\cli\bin.js:353:15)    
        at processTicksAndRejections (internal/process/task_queues.js:94:5)
    Error: Failed to load schema
        at loadSchema (C:\ngWishList2\node_modules\@graphql-codegen\cli\bin.js:353:15)    
        at processTicksAndRejections (internal/process/task_queues.js:94:5)

Когда я регистрирую ответ, я вижу, что он пытается разобрать следующее, что объясняет ошибку:

<code><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot POST /graphql

Если я копаю в индексе. cjs .cs и регистрирую сгенерированный POST тело и ответ, я получаю:

ТЕЛО:

{"query":"query IntrospectionQuery {\n  __schema {\n    queryType {\n      name\n    }\n  
  mutationType {\n      name\n    }\n    subscriptionType {\n      name\n    }\n    types 
{\n      ...FullType\n    }\n    directives {\n      name\n      description\n      locations\n      args {\n        ...InputValue\n      }\n    }\n  }\n}\n\nfragment FullType on __Type {\n  kind\n  name\n  description\n  fields(includeDeprecated: true) {\n    name\n   
 description\n    args {\n      ...InputValue\n    }\n    type {\n      ...TypeRef\n    }\n    isDeprecated\n    deprecationReason\n  }\n  inputFields {\n    ...InputValue\n  }\n  
interfaces {\n    ...TypeRef\n  }\n  enumValues(includeDeprecated: true) {\n    name\n    
description\n    isDeprecated\n    deprecationReason\n  }\n  possibleTypes {\n    ...TypeRef\n  }\n}\n\nfragment InputValue on __InputValue {\n  name\n  description\n  type {\n    
...TypeRef\n  }\n  defaultValue\n}\n\nfragment TypeRef on __Type {\n  kind\n  name\n  ofType {\n    kind\n    name\n    ofType {\n      kind\n      name\n      ofType {\n        kind\n        name\n        ofType {\n          kind\n          name\n          ofType {\n  
          kind\n            name\n            ofType {\n              kind\n
name\n              ofType {\n                kind\n                name\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","variables":{},"operationName":"IntrospectionQuery"}

ОТВЕТ:

Response {
  size: 0,
  timeout: 0,
  [Symbol(Body internals)]: {
    body: PassThrough {
      _readableState: [ReadableState],
      readable: true,
      _events: [Object: null prototype],
      _eventsCount: 2,
      _maxListeners: undefined,
      _writableState: [WritableState],
      writable: false,
      allowHalfOpen: true,
      _transformState: [Object]
    },
    disturbed: false,
    error: null
  },
  [Symbol(Response internals)]: {
    url: 'http://localhost:3000/graphql',
    status: 404,
    statusText: 'Not Found',
    headers: Headers { [Symbol(map)]: [Object: null prototype] },
    counter: 0
  }
}

Это имело бы смысл, если бы моя конечная точка была неправильной, но если бы я попробуйте этот точный запрос в почтальоне, я получу действительный ответ: enter image description here

Есть идеи, почему это так? Что-нибудь еще, что я мог проверить?

Спасибо

1 Ответ

0 голосов
/ 22 марта 2020

Это может быть вызвано неправильной Content-Type или кодировкой. Есть ли где-то репродукция для этого выпуска? репо это воспроизводит?

...