You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipelines执行OpenAPI Generator命令遇504及TypeError问题

Azure Pipelines中OpenAPI Generator间歇性失败问题排查与解决

问题根源

你的命令间歇性失败有两个关联原因:

  1. 主因:网络网关超时(504)
    OpenAPI Generator CLI默认会在运行时请求官方仓库查询版本信息,Azure Pipelines代理的网络偶发延迟导致请求超时,返回AWS ELB的504响应,触发后续错误。
  2. 次生错误:CLI错误处理逻辑bug
    当收到504这类非流式响应时,CLI的错误处理代码尝试调用error.response.data.on('data'),但此时response.data并非流对象(可能是字符串或Buffer),因此抛出TypeError: error.response.data.on is not a function。

执行命令

openapi-generator-cli generate -g csharp-netcore --additional-properties=prependFormOrBodyParameters=true,targetFramework=net6.0,packageName=Microservice.Sdk -o out -i $(swaggerLocation)/$(appName).v1.json --skip-validate-spec

报错信息

server awselb/2.0
content-type text/html
content-length 132
connection close

/opt/hostedtoolcache/node/16.19.0/x64/lib/node_modules/@openapitools/openapi-generator-cli/main.js:1045
            error.response.data.on('data', data => this.logger.log(data.toString('utf8')));
                                ^

TypeError: error.response.data.on is not a function
    at VersionManagerService.printResponseError (/opt/hostedtoolcache/node/16.19.0/x64/lib/node_modules/@openapitools/openapi-generator-cli/main.js:1045:33)
    at /opt/hostedtoolcache/node/16.19.0/x64/lib/node_modules/@openapitools/openapi-generator-cli/main.js:924:18
    at /opt/hostedtoolcache/node/16.19.0/x64/lib/node_modules/@openapitools/openapi-generator-cli/node_modules/rxjs/dist/cjs/internal/operators/catchError.js:13:51
    at OperatorSubscriber._this._error (/opt/hostedtoolcache/node/16.19.0/x64/lib/node_modules/@openapitools/openapi-generator-cli/node_modules/rxjs/dist/cjs/internal/operators/OperatorSubscriber.js:43:21)
    at OperatorSubscriber.Subscriber.error (/opt/hostedtoolcache/node/16.19.0/x64/lib/node_modules/@openapitools/openapi-generator-cli/node_modules/rxjs/dist/cjs/internal/Subscriber.js:60:18)
    at OperatorSubscriber.Subscriber._error (/opt/hostedtoolcache/node/16.19.0/x64/lib/node_modules/@openapitools/openapi-generator-cli/node_modules/rxjs/dist/cjs/internal/Subscriber.js:84:30)
    at OperatorSubscriber.Subscriber.error (/opt/hostedtoolcache/node/16.19.0/x64/lib/node_modules/@openapitools/openapi-generator-cli/node_modules/rxjs/dist/cjs/internal/Subscriber.js:60:18)
    at OperatorSubscriber.Subscriber._error (/opt/hostedtoolcache/node/16.19.0/x64/lib/node_modules/@openapitools/openapi-generator-cli/node_modules/rxjs/dist/cjs/internal/Subscriber.js:84:30)
    at OperatorSubscriber.Subscriber.error (/opt/hostedtoolcache/node/16.19.0/x64/lib/node_modules/@openapitools/openapi-generator-cli/node_modules/rxjs/dist/cjs/internal/Subscriber.js:60:18)
    at OperatorSubscriber.Subscriber._error (/opt/hostedtoolcache/node/16.19.0/x64/lib/node_modules/@openapitools/openapi-generator-cli/node_modules/rxjs/dist/cjs/internal/Subscriber.js:84:30)

解决方案

1. 固定Generator版本,跳过版本查询

在命令中添加--generator-version参数指定具体版本,避免CLI发起网络请求查询版本:

openapi-generator-cli generate --generator-version 6.6.0 -g csharp-netcore --additional-properties=prependFormOrBodyParameters=true,targetFramework=net6.0,packageName=Microservice.Sdk -o out -i $(swaggerLocation)/$(appName).v1.json --skip-validate-spec

选择你之前稳定运行的版本号即可

2. 在Azure Pipelines中添加步骤重试

针对该script步骤配置重试,应对偶发网络问题:

steps:
- script: "openapi-generator-cli generate ..."
  displayName: "Generate SDK"
  retryCount: 3
  retryIntervalInSeconds: 10

3. 离线运行Generator(彻底规避网络依赖)

提前下载OpenAPI Generator的jar包到Pipeline代理,直接用Java运行,完全跳过网络请求:

java -jar openapi-generator-cli-6.6.0.jar generate -g csharp-netcore --additional-properties=prependFormOrBodyParameters=true,targetFramework=net6.0,packageName=Microservice.Sdk -o out -i $(swaggerLocation)/$(appName).v1.json --skip-validate-spec

4. 降级CLI版本修复错误处理bug

该TypeError是特定版本@openapitools/openapi-generator-cli的bug,降级到2.6.0版本可规避:

npm install -g @openapitools/openapi-generator-cli@2.6.0

内容的提问来源于stack exchange,提问作者sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 12:15:25