cloud-sdk-js
cloud-sdk-js copied to clipboard
[Due: Mar] openapi-generator fails to generate client
Describe the bug
I want to create a open-api client using an open api schema from SAP Business Accelerator Hub, specifically https://api.sap.com/api/OP_API_SALES_QUOTATION_SRV_0001/overview. I am getting ErrorWithCause: Could not write file "sales-quotation-header-api.ts"..
Digging a b it into the code I find that there is a syntax error in the created files
SyntaxError: ',' expected. (55:25)
53 | '$expand'?: Set<'*' | 'to_Item' | 'to_Partner' | 'to_PrecedingProcFlowDoc' | 'to_PricingElement' | 'to_RelatedObject' | 'to_SubsequentProcFlowDoc' | 'to_Text'>}) => new OpenApiRequestBuilder<APISALESQUOTATIONSRVASalesQuotationType>(
54 | 'get',
> 55 | '/A_SalesQuotation('{salesQuotation}')',
| ^
56 | {
57 | pathParameters: { salesQuotation },
where it seems as if template literals are not used correctly, it should probably be
> 55 | `/A_SalesQuotation('${salesQuotation}')`,
The generation does not work for .json or .yaml. The generation of the odata client via .edmx file works but is not sufficient for the use case.
To Reproduce Steps to reproduce the behavior:
- Download open api json spec from
https://api.sap.com/api/OP_API_SALES_QUOTATION_SRV_0001/overview - Execute
npx openapi-generator --input <input-directory> --outputDir <output-directory> --clearOutputDir --skipValidation. Note, I do have to add--skipValidationbecause the generation would otherwise not work because of some naming issues of the endpoints. - See error
Expected behavior Successful generation of the open-api client.
Used Versions:
- node version: v18.16.0
- npm version: done with pnpm version
7.33.5 - SAP Cloud SDK version you used as dependency:
3.12.1
Code Examples If applicable, add code snippets as examples to help explain your problem. Please remove sensitive information.
Log file Original error
[2024-03-15T10:23:25.021Z] ERROR (cli): ErrorWithCause: Generation of services failed.
at /Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/@[email protected]/node_modules/@sap-cloud-sdk/openapi-generator/dist/cli.js:15:18
Caused by:
Error: Could not generate client. Errors: [
ErrorWithCause: Could not write file "sales-quotation-header-api.ts".
]
at finishAll (/Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/@[email protected]/node_modules/@sap-cloud-sdk/util/dist/promise.js:19:15)
at async generateWithParsedOptions (/Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/@[email protected]/node_modules/@sap-cloud-sdk/openapi-generator/dist/generator.js:59:9)
Debugged error
SyntaxError: ',' expected. (55:25)
53 | '$expand'?: Set<'*' | 'to_Item' | 'to_Partner' | 'to_PrecedingProcFlowDoc' | 'to_PricingElement' | 'to_RelatedObject' | 'to_SubsequentProcFlowDoc' | 'to_Text'>}) => new OpenApiRequestBuilder<APISALESQUOTATIONSRVASalesQuotationType>(
54 | 'get',
> 55 | '/A_SalesQuotation('{salesQuotation}')',
| ^
56 | {
57 | pathParameters: { salesQuotation },
58 | queryParameters
at Kq (file:///Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/[email protected]/node_modules/prettier/plugins/typescript.mjs:23:498)
at xz (file:///Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/[email protected]/node_modules/prettier/plugins/typescript.mjs:25:794)
at Object.Cz [as parse] (file:///Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/[email protected]/node_modules/prettier/plugins/typescript.mjs:25:1194)
at parse4 (file:///Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/[email protected]/node_modules/prettier/index.mjs:22117:24)
at async coreFormat (file:///Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/[email protected]/node_modules/prettier/index.mjs:22607:7)
at async formatWithCursor (file:///Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/[email protected]/node_modules/prettier/index.mjs:22809:14)
at async Module.format2 (file:///Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/[email protected]/node_modules/prettier/index.mjs:24194:25)
at async createFile (/Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/@[email protected]/node_modules/@sap-cloud-sdk/generator-common/dist/file-writer/create-file.js:113:24)
at async createApis (/Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/@[email protected]/node_modules/@sap-cloud-sdk/openapi-generator/dist/generator.js:129:9)
at async generateMandatorySources (/Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/@[email protected]/node_modules/@sap-cloud-sdk/openapi-generator/dist/generator.js:122:5) {
loc: { start: { line: 55, column: 25 }, end: { line: 55, column: 25 } },
cause: Vm: ',' expected.
at RB (file:///Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/[email protected]/node_modules/prettier/plugins/typescript.mjs:21:119402)
at YB (file:///Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/[email protected]/node_modules/prettier/plugins/typescript.mjs:21:122980)
at YU (file:///Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/[email protected]/node_modules/prettier/plugins/typescript.mjs:21:191880)
at $q (file:///Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/[email protected]/node_modules/prettier/plugins/typescript.mjs:21:203680)
at Xq (file:///Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/[email protected]/node_modules/prettier/plugins/typescript.mjs:21:203346)
at file:///Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/[email protected]/node_modules/prettier/plugins/typescript.mjs:25:1160
at Zq (file:///Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/[email protected]/node_modules/prettier/plugins/typescript.mjs:23:652)
at Object.Cz [as parse] (file:///Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/[email protected]/node_modules/prettier/plugins/typescript.mjs:25:1132)
at parse4 (file:///Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/[email protected]/node_modules/prettier/index.mjs:22117:24)
at async coreFormat (file:///Users/lovis/Documents/workspace/ms-platform-deploy/node_modules/.pnpm/[email protected]/node_modules/prettier/index.mjs:22607:7) {
fileName: 'estree.ts',
location: { start: [Object], end: [Object] }
},
codeFrame: "\x1B[0m \x1B[90m 53 |\x1B[39m \x1B[32m'$expand'\x1B[39m\x1B[33m?\x1B[39m\x1B[33m:\x1B[39m \x1B[33mSet\x1B[39m\x1B[33m<\x1B[39m\x1B[32m'*'\x1B[39m \x1B[33m|\x1B[39m \x1B[32m'to_Item'\x1B[39m \x1B[33m|\x1B[39m \x1B[32m'to_Partner'\x1B[39m \x1B[33m|\x1B[39m \x1B[32m'to_PrecedingProcFlowDoc'\x1B[39m \x1B[33m|\x1B[39m \x1B[32m'to_PricingElement'\x1B[39m \x1B[33m|\x1B[39m \x1B[32m'to_RelatedObject'\x1B[39m \x1B[33m|\x1B[39m \x1B[32m'to_SubsequentProcFlowDoc'\x1B[39m \x1B[33m|\x1B[39m \x1B[32m'to_Text'\x1B[39m\x1B[33m>\x1B[39m}) \x1B[33m=>\x1B[39m \x1B[36mnew\x1B[39m \x1B[33mOpenApiRequestBuilder\x1B[39m\x1B[33m<\x1B[39m\x1B[33mAPISALESQUOTATIONSRVASalesQuotationType\x1B[39m\x1B[33m>\x1B[39m(\x1B[0m\n" +
"\x1B[0m \x1B[90m 54 |\x1B[39m \x1B[32m'get'\x1B[39m\x1B[33m,\x1B[39m\x1B[0m\n" +
"\x1B[0m\x1B[31m\x1B[1m>\x1B[22m\x1B[39m\x1B[90m 55 |\x1B[39m \x1B[32m'/A_SalesQuotation('\x1B[39m{salesQuotation}\x1B[32m')'\x1B[39m\x1B[33m,\x1B[39m\x1B[0m\n" +
'\x1B[0m \x1B[90m |\x1B[39m \x1B[31m\x1B[1m^\x1B[22m\x1B[39m\x1B[0m\n' +
'\x1B[0m \x1B[90m 56 |\x1B[39m {\x1B[0m\n' +
'\x1B[0m \x1B[90m 57 |\x1B[39m pathParameters\x1B[33m:\x1B[39m { salesQuotation }\x1B[33m,\x1B[39m\x1B[0m\n' +
'\x1B[0m \x1B[90m 58 |\x1B[39m queryParameters\x1B[0m'
}
Impact / Priority
Affected development phase: Development
Impact: Blocked
Timeline: Go-Live is in 2 weeks.
Hi @lovis-ff ,
thanks for getting in touch with us. I was able to reproduce the bug. We'll let you know if we have another update.
Hi @mr-flannery, are there any updates from your side?
Hi @lovis-ff ,
unfortatunately, no. I currently cannot give you an estimate of when we're going to tackle this. If this is a blocker for you, I would suggest calling the API for which you're trying to generate the client manually for now.
Hi @lovis-ff ,
The PR with the fix was merged, we will release a new version soon. In the meanwhile, please try out the canary version.
Thanks. I tested with version 3.14.0 and the generation works fine.