在将swagger设置到我的node.js应用程序中时遇到问题。我正在使用while((matchlist.get(index).getSignature()).NOTequals(signature))
和swagger-jsdoc
创建文档。这是版本
“ swagger-jsdoc”:“ 3.5.0”,“ swagger-ui-express”:“ 4.1.3”
下面是配置,我将其传递给swagger-jsdoc。
swagger-ui-express
毕竟,我得到一个错误
无法读取未定义的属性“参数”
实际上,当我仔细阅读大量的文档时,这令我感到惊讶。 可能是什么问题?
答案 0 :(得分:0)
OpenAPI不支持$ref
无处不在。 $ref
仅可在OpenAPI Specification明确声明字段值可以是“引用对象”的特定位置使用。
例如,不允许在$ref
,paths
和components/parameters
下直接使用components/schemas
-您只能引用单个路径,参数和模式。
您的示例的正确版本是:
paths:
/foo:
$ref: '#/paths/index.yml#/~1foo' # $ref to root node `/foo` in `paths/index.yml`
/bar:
$ref: '#/paths/index.yml#/~1bar' # $ref to root node `/bar` in `paths/index.yml`
components:
parameters:
param1:
$ref: 'components/parameters/index.yml#/param1'
param2:
$ref: 'components/parameters/index.yml#/param2'
schemas:
schema1:
$ref: 'components/schemas/index.yml#/schema1'
schema2:
$ref: 'components/schemas/index.yml#/schema2'
如果要在随机的地方使用$ref
,则必须使用可以解析任意$ ref的解析器/工具对定义进行预处理。这将为您提供可与兼容OpenAPI的工具一起使用的有效OpenAPI文件。 json-refs是一种这样的预处理工具,您可以找到预处理here的示例。