Apollo-tooling: Code generation broken on 2.12.3

Created on 7 Jun 2019  Â·  6Comments  Â·  Source: apollographql/apollo-tooling

Trying to generate typescript typings with the command:

npx apollo client:codegen --includes='./src/**/*.tsx' --addTypename --target=typescript --globalTypesFile='src/typings/globalSchemaTypes.d.ts'

This works fine with [email protected] and below but breaks from version 2.12.3 to the current release

the error I get is kinda cryptic:

λ › npx apollo client:codegen --includes='./src/**/*.tsx' --addTypename --target=typescript --globalTypesFile='src/typings/globalSchemaTypes.d.ts'
 ›   Warning: apollo update available from 2.12.3 to 2.12.5.
  ✔ Loading Apollo Project
  ✖ Generating query files with 'typescript' target
    → Cannot query field "pokemons" on type "Query"
(node:57356) UnhandledPromiseRejectionWarning: GraphQLError: Cannot query field "pokemons" on type "Query"
    at Compiler.compileSelection (/Users/fede/Celerative/metrics/packages/metrics-front/node_modules/apollo-codegen-core/lib/compiler/index.js:119:27)
    at /Users/fede/Celerative/metrics/packages/metrics-front/node_modules/apollo-codegen-core/lib/compiler/index.js:106:76
    at Array.map (<anonymous>)
    at Compiler.compileSelectionSet (/Users/fede/Celerative/metrics/packages/metrics-front/node_modules/apollo-codegen-core/lib/compiler/index.js:106:18)
    at Compiler.compileOperation (/Users/fede/Celerative/metrics/packages/metrics-front/node_modules/apollo-codegen-core/lib/compiler/index.js:86:32)
    at Object.compileToIR (/Users/fede/Celerative/metrics/packages/metrics-front/node_modules/apollo-codegen-core/lib/compiler/index.js:15:44)
    at Object.generate [as default] (/Users/fede/Celerative/metrics/packages/metrics-front/node_modules/apollo/lib/generate.js:78:36)
    at write (/Users/fede/Celerative/metrics/packages/metrics-front/node_modules/apollo/lib/commands/client/codegen.js:67:54)
    at GraphQLClientProject._onDiagnostics (/Users/fede/Celerative/metrics/packages/metrics-front/node_modules/apollo/lib/commands/client/codegen.js:84:29)
    at GraphQLClientProject.validate (/Users/fede/Celerative/metrics/packages/metrics-front/node_modules/apollo-language-server/lib/project/client.js:132:18)
(node:57356) 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(). (rejection id: 3)
(node:57356) [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.
GraphQLError: Cannot query field "pokemons" on type "Query"
    at Compiler.compileSelection (~/Celerative/metrics/packages/metrics-front/node_modules/apollo-codegen-core/lib/compiler/index.js:119:27)
    at ~/Celerative/metrics/packages/metrics-front/node_modules/apollo-codegen-core/lib/compiler/index.js:106:76
    at Array.map (<anonymous>)
    at Compiler.compileSelectionSet (~/Celerative/metrics/packages/metrics-front/node_modules/apollo-codegen-core/lib/compiler/index.js:106:18)
    at Compiler.compileOperation (~/Celerative/metrics/packages/metrics-front/node_modules/apollo-codegen-core/lib/compiler/index.js:86:32)
    at Object.compileToIR (~/Celerative/metrics/packages/metrics-front/node_modules/apollo-codegen-core/lib/compiler/index.js:15:44)
    at Object.generate [as default] (~/Celerative/metrics/packages/metrics-front/node_modules/apollo/lib/generate.js:78:36)
    at write (~/Celerative/metrics/packages/metrics-front/node_modules/apollo/lib/commands/client/codegen.js:67:54)
    at Task.task (~/Celerative/metrics/packages/metrics-front/node_modules/apollo/lib/commands/client/codegen.js:86:46)

another interesting detail: if I don't have apollo installed and run the command above it will work fine, but using the latest release (npx will download it on the fly)

Most helpful comment

I have same issue with that. Seems like it's broken since 2.11.1.
My generation types script and results with different versions of apollo:

apollo codegen:generate --localSchemaFile=schema.graphql --target=typescript --includes=src/**/*.ts --tagName=gql --addTypename --globalTypesFile=src/queries/types/graphql-global-types.ts types

2.11.0:

  ✔ Loading Apollo Project
  ✔ Generating query files with 'typescript' target - wrote 16 files

2.11.1 -- 2.12.4:

{ Error: Error in "Loading queries for Unnamed Project": Error: [UriError]: Scheme is missing: {scheme: "", authority: "", path: "/Users/eudr1/ebuilder/reports-frontend/.env", query: "", fragment: ""}
    at Object.error (/Users/eudr1/ebuilder/reports-frontend/node_modules/@oclif/errors/lib/index.js:22:17)
    at Generate.error (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo/node_modules/@oclif/command/lib/command.js:48:23)
    at OclifLoadingHandler.showError (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo/lib/OclifLoadingHandler.js:28:22)
    at OclifLoadingHandler.handle (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo/lib/OclifLoadingHandler.js:13:18) oclif: { exit: 2 }, code: undefined }
(node:41413) UnhandledPromiseRejectionWarning: Error: Error initializing Apollo GraphQL project "Unnamed Project": Error: Error in "Loading queries for Unnamed Project": Error: [UriError]: Scheme is missing: {scheme: "", authority: "", path: "/Users/eudr1/ebuilder/reports-frontend/.env", query: "", fragment: ""}
    at Object.error (/Users/eudr1/ebuilder/reports-frontend/node_modules/@oclif/errors/lib/index.js:22:17)
    at Generate.error (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo/node_modules/@oclif/command/lib/command.js:48:23)
    at OclifLoadingHandler.showError (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo/lib/OclifLoadingHandler.js:28:22)
    at GraphQLProject.readyPromise.Promise.all.then.catch.error (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo-language-server/lib/project/base.js:44:33)
(node:41413) 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(). (rejection id: 3)
(node:41413) [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.
Error: [UriError]: Scheme is missing: {scheme: "", authority: "", path: "/Users/eudr1/ebuilder/reports-frontend/.env", query: "", fragment: ""}
    at _validateUri (~/ebuilder/reports-frontend/node_modules/vscode-uri/lib/umd/index.js:52:23)
    at _URI.URI (~/ebuilder/reports-frontend/node_modules/vscode-uri/lib/umd/index.js:153:17)
    at new _URI (~/ebuilder/reports-frontend/node_modules/vscode-uri/lib/umd/index.js:355:51)
    at Function.URI.parse (~/ebuilder/reports-frontend/node_modules/vscode-uri/lib/umd/index.js:265:20)
    at exports.normalizeURI (~/ebuilder/reports-frontend/node_modules/apollo-language-server/lib/utilities/uri.js:17:39)
    at Array.map (<anonymous>)
    at FileSet.allFiles (~/ebuilder/reports-frontend/node_modules/apollo-language-server/lib/fileSet.js:29:14)
    at new GraphQLClientProject (~/ebuilder/reports-frontend/node_modules/apollo-language-server/lib/project/client.js:39:21)
    at Generate.createService (~/ebuilder/reports-frontend/node_modules/apollo/lib/Command.js:114:28)
    at Generate.init (~/ebuilder/reports-frontend/node_modules/apollo/lib/Command.js:37:14)

2.12.5+:

  ✔ Loading Apollo Project
  ✖ Generating query files with 'typescript' target
    → Cannot query field "usersCampaigns" on type "Query"
GraphQLError: Cannot query field "usersCampaigns" on type "Query"
    at Compiler.compileSelection (~/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:119:27)
    at selections.selectionSetNode.selections.map.selectionNode (~/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:106:76)
    at Array.map (<anonymous>)
    at Compiler.compileSelectionSet (~/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:106:18)
    at Compiler.compileOperation (~/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:86:32)
    at Object.compileToIR (~/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:15:44)
    at Object.generate [as default] (~/ebuilder/reports-frontend/node_modules/apollo/lib/generate.js:78:36)
    at write (~/ebuilder/reports-frontend/node_modules/apollo/lib/commands/client/codegen.js:67:54)
    at Task.task (~/ebuilder/reports-frontend/node_modules/apollo/lib/commands/client/codegen.js:86:46)
(node:41726) UnhandledPromiseRejectionWarning: GraphQLError: Cannot query field "usersCampaigns" on type "Query"
    at Compiler.compileSelection (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:119:27)
    at selections.selectionSetNode.selections.map.selectionNode (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:106:76)
    at Array.map (<anonymous>)
    at Compiler.compileSelectionSet (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:106:18)
    at Compiler.compileOperation (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:86:32)
    at Object.compileToIR (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:15:44)
    at Object.generate [as default] (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo/lib/generate.js:78:36)
    at write (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo/lib/commands/client/codegen.js:67:54)
    at GraphQLClientProject.project.onDiagnostics [as _onDiagnostics] (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo/lib/commands/client/codegen.js:84:29)
    at GraphQLClientProject.validate (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo-language-server/lib/project/client.js:140:18)
(node:41726) 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(). (rejection id: 3)
(node:41726) [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.

All 6 comments

I always run into this problem when I have apollo installed as local dependency on a Gatsby site. I believe this is due to graphql package version mismatch, check with npm ls graphql.

I have same issue with that. Seems like it's broken since 2.11.1.
My generation types script and results with different versions of apollo:

apollo codegen:generate --localSchemaFile=schema.graphql --target=typescript --includes=src/**/*.ts --tagName=gql --addTypename --globalTypesFile=src/queries/types/graphql-global-types.ts types

2.11.0:

  ✔ Loading Apollo Project
  ✔ Generating query files with 'typescript' target - wrote 16 files

2.11.1 -- 2.12.4:

{ Error: Error in "Loading queries for Unnamed Project": Error: [UriError]: Scheme is missing: {scheme: "", authority: "", path: "/Users/eudr1/ebuilder/reports-frontend/.env", query: "", fragment: ""}
    at Object.error (/Users/eudr1/ebuilder/reports-frontend/node_modules/@oclif/errors/lib/index.js:22:17)
    at Generate.error (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo/node_modules/@oclif/command/lib/command.js:48:23)
    at OclifLoadingHandler.showError (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo/lib/OclifLoadingHandler.js:28:22)
    at OclifLoadingHandler.handle (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo/lib/OclifLoadingHandler.js:13:18) oclif: { exit: 2 }, code: undefined }
(node:41413) UnhandledPromiseRejectionWarning: Error: Error initializing Apollo GraphQL project "Unnamed Project": Error: Error in "Loading queries for Unnamed Project": Error: [UriError]: Scheme is missing: {scheme: "", authority: "", path: "/Users/eudr1/ebuilder/reports-frontend/.env", query: "", fragment: ""}
    at Object.error (/Users/eudr1/ebuilder/reports-frontend/node_modules/@oclif/errors/lib/index.js:22:17)
    at Generate.error (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo/node_modules/@oclif/command/lib/command.js:48:23)
    at OclifLoadingHandler.showError (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo/lib/OclifLoadingHandler.js:28:22)
    at GraphQLProject.readyPromise.Promise.all.then.catch.error (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo-language-server/lib/project/base.js:44:33)
(node:41413) 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(). (rejection id: 3)
(node:41413) [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.
Error: [UriError]: Scheme is missing: {scheme: "", authority: "", path: "/Users/eudr1/ebuilder/reports-frontend/.env", query: "", fragment: ""}
    at _validateUri (~/ebuilder/reports-frontend/node_modules/vscode-uri/lib/umd/index.js:52:23)
    at _URI.URI (~/ebuilder/reports-frontend/node_modules/vscode-uri/lib/umd/index.js:153:17)
    at new _URI (~/ebuilder/reports-frontend/node_modules/vscode-uri/lib/umd/index.js:355:51)
    at Function.URI.parse (~/ebuilder/reports-frontend/node_modules/vscode-uri/lib/umd/index.js:265:20)
    at exports.normalizeURI (~/ebuilder/reports-frontend/node_modules/apollo-language-server/lib/utilities/uri.js:17:39)
    at Array.map (<anonymous>)
    at FileSet.allFiles (~/ebuilder/reports-frontend/node_modules/apollo-language-server/lib/fileSet.js:29:14)
    at new GraphQLClientProject (~/ebuilder/reports-frontend/node_modules/apollo-language-server/lib/project/client.js:39:21)
    at Generate.createService (~/ebuilder/reports-frontend/node_modules/apollo/lib/Command.js:114:28)
    at Generate.init (~/ebuilder/reports-frontend/node_modules/apollo/lib/Command.js:37:14)

2.12.5+:

  ✔ Loading Apollo Project
  ✖ Generating query files with 'typescript' target
    → Cannot query field "usersCampaigns" on type "Query"
GraphQLError: Cannot query field "usersCampaigns" on type "Query"
    at Compiler.compileSelection (~/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:119:27)
    at selections.selectionSetNode.selections.map.selectionNode (~/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:106:76)
    at Array.map (<anonymous>)
    at Compiler.compileSelectionSet (~/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:106:18)
    at Compiler.compileOperation (~/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:86:32)
    at Object.compileToIR (~/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:15:44)
    at Object.generate [as default] (~/ebuilder/reports-frontend/node_modules/apollo/lib/generate.js:78:36)
    at write (~/ebuilder/reports-frontend/node_modules/apollo/lib/commands/client/codegen.js:67:54)
    at Task.task (~/ebuilder/reports-frontend/node_modules/apollo/lib/commands/client/codegen.js:86:46)
(node:41726) UnhandledPromiseRejectionWarning: GraphQLError: Cannot query field "usersCampaigns" on type "Query"
    at Compiler.compileSelection (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:119:27)
    at selections.selectionSetNode.selections.map.selectionNode (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:106:76)
    at Array.map (<anonymous>)
    at Compiler.compileSelectionSet (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:106:18)
    at Compiler.compileOperation (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:86:32)
    at Object.compileToIR (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo-codegen-core/lib/compiler/index.js:15:44)
    at Object.generate [as default] (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo/lib/generate.js:78:36)
    at write (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo/lib/commands/client/codegen.js:67:54)
    at GraphQLClientProject.project.onDiagnostics [as _onDiagnostics] (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo/lib/commands/client/codegen.js:84:29)
    at GraphQLClientProject.validate (/Users/eudr1/ebuilder/reports-frontend/node_modules/apollo-language-server/lib/project/client.js:140:18)
(node:41726) 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(). (rejection id: 3)
(node:41726) [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.

Investigated this a little bit, here's what I found out:

https://github.com/apollographql/apollo-tooling/blob/master/packages/apollo-codegen-core/src/utilities/graphql.ts#L235

When parentType is root Query, parentType instanceof GraphQLObjectType || parentType instanceof GraphQLInterfaceType is false, thus getFieldDef returns undefined and here's the error:

https://github.com/apollographql/apollo-tooling/blob/master/packages/apollo-codegen-core/src/compiler/index.ts#L318

Cannot query field "${name}" on type "${String(parentType)}"

As utilities/graphql was last changed on Nov, 2018, I believe it has something to do with instantiating Query


If anyone gets Scheme is missing error even on versions below 2.11.0 (for me it was the case), try the following:

at ApolloConfig.get configDirURI [as configDirURI] (~/dev/web-app/node_modules/apollo-language-server/lib/config/config.js:39:36)

go to this line and replace this:

        return this.configURI && this.configURI.fsPath.includes(".js")
            ? vscode_uri_1.default.parse(path_1.dirname(this.configURI.fsPath))
            : this.configURI;

with this:

        return this.configURI && this.configURI.fsPath.includes(".js")
            ? vscode_uri_1.default.parse('file://' + path_1.dirname(this.configURI.fsPath))
            : this.configURI;

We're also exhibiting this issue! @hwillson

The same issue for me :(

P.S if you want to use lates version of apollo use this workaround https://github.com/apollographql/apollo-tooling/issues/1296#issuecomment-497862004

This should be resolved in #1355 (published as [email protected])

Please note the comments in the mentioned PR, as this fix comes with some caveats that we cannot work around, unfortunately. There is a range of graphql versions that we cannot support. If your project depends on graphql, please make sure your installed version fits within the ranges mentioned in the PR.

Was this page helpful?
0 / 5 - 0 ratings