Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Code generation broken on 2.12.3 #1329

Closed
marcosfede opened this issue Jun 7, 2019 · 6 comments
Closed

Code generation broken on 2.12.3 #1329

marcosfede opened this issue Jun 7, 2019 · 6 comments

Comments

@marcosfede
Copy link

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 apollo@2.12.2 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)

@ryanditjia
Copy link

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.

@EugeneDraitsev
Copy link

EugeneDraitsev commented Jun 10, 2019

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.

@vmajsuk
Copy link

vmajsuk commented Jun 13, 2019

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;

@fbartho
Copy link

fbartho commented Jun 17, 2019

We're also exhibiting this issue! @hwillson

@AleksandrChernyavenko
Copy link

AleksandrChernyavenko commented Jun 26, 2019

The same issue for me :(

P.S if you want to use lates version of apollo use this workaround #1296 (comment)

@trevor-scheer
Copy link
Member

This should be resolved in #1355 (published as apollo@2.15.0)

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.

toolness added a commit to JustFixNYC/tenants2 that referenced this issue Jun 28, 2019
Aside from somehow being orders of magnitude faster than npm, it also makes it easier to install into arbitrary directories, which is especially useful for potentially getting around a very strange docker bug on Johanna's system.

## Notes

* Upgraded apollo to get around apollographql/apollo-tooling#1329.

* I tried using a tool to convert our `package-lock.json` to a `yarn.lock` but it didn't work, so I just built our `yarn.lock` directly from the `package.json`.  This has resulted in some intermediate dependencies being different, which ultimately required me to upgrade a few packages.

    * One such package was `@testing-library/react`, which uncovered #707 (which we will deal with separately).
toolness added a commit to JustFixNYC/tenants2 that referenced this issue Jul 10, 2019
Aside from somehow being orders of magnitude faster than npm, it also makes it easier to install into arbitrary directories, which is especially useful for potentially getting around a very strange docker bug on Johanna's system.

## Notes

* Upgraded apollo to get around apollographql/apollo-tooling#1329.

* I tried using a tool to convert our `package-lock.json` to a `yarn.lock` but it didn't work, so I just built our `yarn.lock` directly from the `package.json`.  This has resulted in some intermediate dependencies being different, which ultimately required me to upgrade a few packages.

    * One such package was `@testing-library/react`, which uncovered #707 (which we will deal with separately).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants