openapi2typescript icon indicating copy to clipboard operation
openapi2typescript copied to clipboard

生成 mock 出现堆栈溢出

Open phpmaple opened this issue 2 years ago • 4 comments



> [email protected] openapi /Users/koofrank/Documents/projects/wanda-sa-h5
> vite-node openapi.config.ts

[openAPI]: ✅ 成功生成 service 文件
/Users/koofrank/Documents/projects/wanda-sa-h5/node_modules/.pnpm/@[email protected]/node_modules/@umijs/openapi/dist/openAPIParserMock/index.js:98
        this.sampleFromSchema = (schema, propsName) => {
                                ^

RangeError: Maximum call stack size exceeded
    at OpenAPIGeneratorMockJs.sampleFromSchema (/Users/koofrank/Documents/projects/wanda-sa-h5/node_modules/.pnpm/@[email protected]/node_modules/@umijs/openapi/dist/openAPIParserMock/index.js:98:33)
    at OpenAPIGeneratorMockJs.sampleFromSchema (/Users/koofrank/Documents/projects/wanda-sa-h5/node_modules/.pnpm/[email protected]/node_modules/memoizee/lib/configure-map.js:61:24)
    at OpenAPIGeneratorMockJs.sampleFromSchema (/Users/koofrank/Documents/projects/wanda-sa-h5/node_modules/.pnpm/@[email protected]/node_modules/@umijs/openapi/dist/openAPIParserMock/index.js:135:35)
    at OpenAPIGeneratorMockJs.sampleFromSchema (/Users/koofrank/Documents/projects/wanda-sa-h5/node_modules/.pnpm/[email protected]/node_modules/memoizee/lib/configure-map.js:61:24)
    at OpenAPIGeneratorMockJs.sampleFromSchema (/Users/koofrank/Documents/projects/wanda-sa-h5/node_modules/.pnpm/@[email protected]/node_modules/@umijs/openapi/dist/openAPIParserMock/index.js:119:38)
    at OpenAPIGeneratorMockJs.sampleFromSchema (/Users/koofrank/Documents/projects/wanda-sa-h5/node_modules/.pnpm/[email protected]/node_modules/memoizee/lib/configure-map.js:61:24)
    at OpenAPIGeneratorMockJs.sampleFromSchema (/Users/koofrank/Documents/projects/wanda-sa-h5/node_modules/.pnpm/@[email protected]/node_modules/@umijs/openapi/dist/openAPIParserMock/index.js:135:35)
    at OpenAPIGeneratorMockJs.sampleFromSchema (/Users/koofrank/Documents/projects/wanda-sa-h5/node_modules/.pnpm/[email protected]/node_modules/memoizee/lib/configure-map.js:61:24)
    at OpenAPIGeneratorMockJs.sampleFromSchema (/Users/koofrank/Documents/projects/wanda-sa-h5/node_modules/.pnpm/@[email protected]/node_modules/@umijs/openapi/dist/openAPIParserMock/index.js:119:38)
    at OpenAPIGeneratorMockJs.sampleFromSchema (/Users/koofrank/Documents/projects/wanda-sa-h5/node_modules/.pnpm/[email protected]/node_modules/memoizee/lib/configure-map.js:61:24)
 ELIFECYCLE  Command failed with exit code 1.

phpmaple avatar Apr 11 '22 12:04 phpmaple

文件发出来看看

chenshuai2144 avatar Apr 12 '22 08:04 chenshuai2144

// ============= paths =============

  "/base-server/api/assetsUsageRecord/{id}": {
      "get": {
        "tags": [
          "assets-usage-record-api"
        ],
        "summary": "get",
        "operationId": "getUsingGET_1",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "id",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "originalRef": "DataResult«AssetsUsageRecordVo»",
              "$ref": "#/definitions/DataResult«AssetsUsageRecordVo»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    }
    
    
 /**  错误:
  cloud-ui/node_modules/@umijs/openapi/dist/openAPIParserMock/index.js:29
    if (name.toLocaleLowerCase().endsWith('id')) {
                                 ^

RangeError: Maximum call stack size exceeded
    at String.endsWith (<anonymous>)
    at getDateByName (cloud-ui/node_modules/@umijs/openapi/dist/openAPIParserMock/index.js:29:34)
*/

niujianqiang123 avatar Aug 25 '22 09:08 niujianqiang123

找到原因了,我的是因为这个报错

"produces": [
          "application/json"
 ]

改成以下即可

"produces": [
          "*/*"
        ],

生成的mock文件没有返回值,都是空对象 {}

niujianqiang123 avatar Aug 25 '22 10:08 niujianqiang123

这个应该是接口定义无限级联的情况,比如后端定义结构体 model.Response,里面有个字段的定义是model.Response,现实情况可能会比这复杂,比如a->b->c->a

fengluoX avatar Mar 31 '24 15:03 fengluoX