graphql-code-generator: graphql-codegen-cli UnhandledPromiseRejection since 1.8.0
Describe the bug Since 1.8.0, when generator is run through code and there is a parsing error, unhandled rejection pops out and node process crashes.
To Reproduce Steps to reproduce the behavior:
Version 1.8.0
Welcome to Node.js v12.9.1.
Type ".help" for more information.
>
> const { generate } = require('@graphql-codegen/cli');
undefined
> p = generate({schema: 'schema.graphql', documents: 'src/**/*.{ts,tsx}', generates: {'/tmp/types.ts': { plugins: ['typescript', 'typescript-operations'] }}}).catch(console.error)
Promise { <pending> }
✔ Parse configuration
❯ Generate outputs
❯ Generate /tmp/types.ts
✔ Load GraphQL schemas
⠼ Load GraphQL documents
Generate
(node:67419) UnhandledPromiseRejectionWarning: GraphQLError: Syntax Error: Expected {, found }
at syntaxError (/Users/peter/Developer/pjur/node_modules/graphql/error/syntaxError.js:15:10)
at Parser.expectToken (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:1404:40)
at Parser.many (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:1514:10)
at Parser.parseSelectionSet (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:267:24)
at Parser.parseFragment (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:375:26)
at Parser.parseSelection (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:280:58)
at Parser.many (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:1518:26)
at Parser.parseSelectionSet (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:267:24)
✔ Parse configuration
❯ Generate outputs
❯ Generate /tmp/types.ts
✔ Load GraphQL schemas
✖ Load GraphQL documents
→ Syntax Error: Expected {, found }
Generate
Found 1 error
✖ GraphQL request
GraphQLError: Syntax Error: Expected {, found }
at syntaxError (/Users/peter/Developer/pjur/node_modules/graphql/error/syntaxError.js:15:10)
at Parser.expectToken (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:1404:40)
at Parser.many (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:1514:10)
at Parser.parseSelectionSet (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:267:24)
at Parser.parseFragment (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:375:26)
at Parser.parseSelection (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:280:58)
at Parser.many (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:1518:26)
at Parser.parseSelectionSet (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:267:24)
at Parser.parseField (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:308:68)
at Parser.parseSelection (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:280:81)
ListrError: Something went wrong
at /Users/peter/Developer/pjur/node_modules/listr/index.js:102:18
at processTicksAndRejections (internal/process/task_queues.js:85:5)
at Object.executeCodegen (/Users/peter/Developer/pjur/node_modules/@graphql-codegen/cli/src/codegen.ts:275:3)
at generate (/Users/peter/Developer/pjur/node_modules/@graphql-codegen/cli/src/generate-and-save.ts:74:23) {
name: 'ListrError',
errors: [
GraphQLError: Syntax Error: Expected {, found }
at syntaxError (/Users/peter/Developer/pjur/node_modules/graphql/error/syntaxError.js:15:10)
at Parser.expectToken (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:1404:40)
at Parser.many (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:1514:10)
at Parser.parseSelectionSet (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:267:24)
at Parser.parseFragment (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:375:26)
at Parser.parseSelection (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:280:58)
at Parser.many (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:1518:26)
at Parser.parseSelectionSet (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:267:24)
at Parser.parseField (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:308:68)
at Parser.parseSelection (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:280:81) {
message: 'Syntax Error: Expected {, found }',
locations: [Array],
context: [Object: null prototype] {}
}
],
context: [Object: null prototype] {}
}
(node:67419) PromiseRejectionHandledWarning: Promise rejection was handled asynchronously (rejection id: 1)
Was correct in 1.7.0:
> p = generate({schema: 'schema.graphql', documents: 'src/**/*.{ts,tsx}', generates: {'/tmp/types.ts': { plugins: ['typescript', 'typescript-operations'] }}}).catch(console.error)
Promise { <pending> }
> ✔ Parse configuration
❯ Generate outputs
❯ Generate /tmp/types.ts
✔ Load GraphQL schemas
✖ Load GraphQL documents
→ Syntax Error: Expected {, found }
Generate
Found 1 error
✖ GraphQL request
Syntax Error: Expected {, found }
GraphQL request:29:3
28 | ... on CheckoutFragment
29 | }
| ^
30 | }
ListrError: Something went wrong
at /Users/peter/Developer/pjur/node_modules/listr/index.js:102:18
at Object.executeCodegen (/Users/peter/Developer/pjur/node_modules/@graphql-codegen/cli/src/codegen.ts:272:3)
at generate (/Users/peter/Developer/pjur/node_modules/@graphql-codegen/cli/src/generate-and-save.ts:74:23) {
name: 'ListrError',
errors: [
GraphQLError: Syntax Error: Expected {, found }
at syntaxError (/Users/peter/Developer/pjur/node_modules/graphql/error/syntaxError.js:15:10)
at Parser.expectToken (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:1404:40)
at Parser.many (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:1514:10)
at Parser.parseSelectionSet (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:267:24)
at Parser.parseFragment (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:375:26)
at Parser.parseSelection (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:280:58)
at Parser.many (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:1518:26)
at Parser.parseSelectionSet (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:267:24)
at Parser.parseField (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:308:68)
at Parser.parseSelection (/Users/peter/Developer/pjur/node_modules/graphql/language/parser.js:280:81) {
message: 'Syntax Error: Expected {, found }',
locations: [Array],
context: [Object: null prototype] {}
}
],
context: [Object: null prototype] {}
}
- My GraphQL schema:
# Put your schema here
- My GraphQL operations:
# Put your operations here
- My
codegen.ymlconfig file:
# Put your YML here
Expected behavior
Environment:
- OS:
@graphql-codegen/...:- NodeJS:
Additional context
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Reactions: 1
- Comments: 15 (6 by maintainers)
Fixed. Thanks
Could you check with the following canary version?
1.8.2-alpha-ed9885c3.63+ed9885c3You can see the correct behaviour with:
npm i @graphql-codegen/cli@1.7.0 && npx gatsby developThank you 😃
By expected I mean that the error handler in catch is called:
console.error("not called")-> this would ouput to console not called and the build process won’t exit and would continue.@pristas-peter Thanks, we’ll take a look.