无法使用openapi-generator生成Node.js服务器

时间:2019-05-21 02:25:15

标签: node.js openapi-generator

如何用OAS 2.0生成nodejs-server作为openapi-generator的输入?

openapi-generator在两个版本3.3.4和4.0.0上运行。 我的执行结果列在下面。

■在3.3.4中

java -jar openapi-generator-cli-3.3.4.jar generate -i petstore.json -g nodejs-server -o stub
[main] WARN  o.o.c.ignore.CodegenIgnoreProcessor - Output directory does not exist, or is inaccessible. No file (.openapi-generator-ignore) will be evaluated.
[main] WARN  o.o.c.languages.NodeJSServerCodegen -

=======================================================================================
Currently, Node.js server doesn't work as its dependency doesn't support OpenAPI Spec3.
For further details, see https://github.com/OpenAPITools/openapi-generator/issues/34
=======================================================================================


[main] INFO  o.o.codegen.DefaultGenerator - Model Pets not generated since it's an alias to array (without property)
Exception in thread "main" java.lang.RuntimeException: Could not generate api file for 'Pets'
        at org.openapitools.codegen.DefaultGenerator.generateApis(DefaultGenerator.java:651)
        at org.openapitools.codegen.DefaultGenerator.generate(DefaultGenerator.java:891)
        at org.openapitools.codegen.cmd.Generate.run(Generate.java:355)
        at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:62)
Caused by: java.lang.IllegalArgumentException: character to be escaped is missing
        at java.util.regex.Matcher.appendReplacement(Matcher.java:809)
        at java.util.regex.Matcher.replaceAll(Matcher.java:955)
        at java.lang.String.replaceAll(String.java:2223)
        at org.openapitools.codegen.languages.NodeJSServerCodegen.apiFilename(NodeJSServerCodegen.java:192)
        at org.openapitools.codegen.DefaultGenerator.generateApis(DefaultGenerator.java:595)
        ... 3 more

■在4.0.0版中

java -jar openapi-generator-cli-4.0.0.jar generate -i petstore.json -g nodejs-server -o stub
[main] WARN  o.o.c.ignore.CodegenIgnoreProcessor - Output directory does not exist, or is inaccessible. No file (.openapi-generator-ignore) will be evaluated.
[main] INFO  o.o.codegen.DefaultGenerator - OpenAPI Generator: nodejs-server (server)
[main] INFO  o.o.codegen.DefaultGenerator - Generator 'nodejs-server' is considered stable.
[main] WARN  o.o.c.languages.NodeJSServerCodegen -

=======================================================================================
Currently, Node.js server doesn't work as its dependency doesn't support OpenAPI Spec3.
For further details, see https://github.com/OpenAPITools/openapi-generator/issues/34
=======================================================================================


[main] INFO  o.o.codegen.DefaultGenerator - Model Pets not generated since it's an alias to array (without property) and `generateAliasAsModel` is set to false (default)
Exception in thread "main" java.lang.RuntimeException: Could not generate api file for 'Pets'
        at org.openapitools.codegen.DefaultGenerator.generateApis(DefaultGenerator.java:666)
        at org.openapitools.codegen.DefaultGenerator.generate(DefaultGenerator.java:922)
        at org.openapitools.codegen.cmd.Generate.run(Generate.java:396)
        at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:60)
Caused by: java.lang.IllegalArgumentException: character to be escaped is missing
        at java.util.regex.Matcher.appendReplacement(Matcher.java:809)
        at java.util.regex.Matcher.replaceAll(Matcher.java:955)
        at java.lang.String.replaceAll(String.java:2223)
        at org.openapitools.codegen.languages.NodeJSServerCodegen.apiFilename(NodeJSServerCodegen.java:181)
        at org.openapitools.codegen.DefaultGenerator.generateApis(DefaultGenerator.java:611)
        ... 3 more

输入的OAS使用以下内容。

https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v2.0/json/petstore.json

执行环境如下。

・ windows10

・ java 1.8.0_202

1 个答案:

答案 0 :(得分:0)

它对我有用:

java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate -g nodejs-server -i https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v2.0/json/petstore.json -o /tmp/nodejs-server
[main] INFO  o.o.codegen.DefaultGenerator - OpenAPI Generator: nodejs-server (server)
[main] INFO  o.o.codegen.DefaultGenerator - Generator 'nodejs-server' is considered stable.
[main] WARN  o.o.c.languages.NodeJSServerCodegen -

=======================================================================================
Currently, Node.js server doesn't work as its dependency doesn't support OpenAPI Spec3.
For further details, see https://github.com/OpenAPITools/openapi-generator/issues/34
=======================================================================================


[main] INFO  o.o.codegen.DefaultCodegen - Skipped overwriting README.md as the file already exists in /tmp/java2//README.md
[main] INFO  o.o.codegen.DefaultGenerator - Model Pets not generated since it's an alias to array (without property) and `generateAliasAsModel` is set to false (default)
[main] INFO  o.o.codegen.AbstractGenerator - writing file /tmp/java2/service/PetsService.js
[main] INFO  o.o.codegen.AbstractGenerator - writing file /tmp/java2/controllers/Pets.js
[main] INFO  o.o.codegen.AbstractGenerator - writing file /tmp/java2/utils/writer.js
[main] INFO  o.o.codegen.AbstractGenerator - writing file /tmp/java2/api/openapi.yaml
[main] INFO  o.o.codegen.AbstractGenerator - writing file /tmp/java2/index.js
[main] INFO  o.o.codegen.AbstractGenerator - writing file /tmp/java2/package.json
[main] INFO  o.o.codegen.AbstractGenerator - writing file /tmp/java2/.openapi-generator/VERSION

但是如警告中所述,nodejs-server生成器不再按预期工作,因为其依赖项之一不支持OpenAPI规范v3。

有关创建新NodeJS Express生成器的最新进展,请参考https://github.com/OpenAPITools/openapi-generator/issues/2828