当前位置: 代码迷 >> 综合 >> swag init 生成的doc文件找不到 swag.spec即undefined: “github.com/swaggo/swag“.Spec
  详细解决方案

swag init 生成的doc文件找不到 swag.spec即undefined: “github.com/swaggo/swag“.Spec

热度:31   发布时间:2023-12-17 04:23:06.0

问题复现

为gin项目增加swagger能力,方便管理api
步骤:
按照官方文档进行 https://github.com/swaggo/swag/blob/master/README_zh-CN.md

//安装swag
go install github.com/swaggo/swag/cmd/swag@latest
//查看swag版本
swag -v
1.7.9
//初始化
swag init

初始化后发现在doc中是这样的:

var SwaggerInfo_swagger = &swag.Spec{
    Version:          "1.0",Host:             "localhost:9090",BasePath:         "",Schemes:          []string{
    },Title:            "swagger",Description:      "swagger 示例项目",InfoInstanceName: "swagger",SwaggerTemplate:  docTemplate_swagger,
}func init() {
    swag.Register(SwaggerInfo_swagger.InstanceName(), SwaggerInfo_swagger)
}

变量名称是SwaggerInfo_swagger,且&swag.Spec 无法导入

环境

swag :1.7.9
go: 1.17.6
os: macOS 12.1

原因

github issue
由于需要在同一个doc包中生成两个文档造成的,保留原始 SwaggerInfo 是不可能的,因为当它与新功能一起使用时,代码将根本无法编译。
就是新的功能替代了旧的功能但是之前的没删干净,有了冲突。

解决方法

使用上个版本的swag

下载 1.7.8 swag

go install github.com/swaggo/swag/cmd/swag@1.7.8

使用与发布版本

官方已经在预发布版本 1.7.9-p1 中稍微修复了这个问题,如果你看到这个文章的时候官方已经到正式版 1.7.10 ,则可以使用最新版
下载预发布版本 1.7.9-p1

go install github.com/swaggo/swag/cmd/swag@v1.7.9-p1

使用swag -v 显示的还是 1.7.9

## 如果不行,获取更新包:
go get github.com/swaggo/echo-swagger##以上还是不行,在更新go get github.com/alecthomas/template

参考

官方的 issue:
https://github.com/swaggo/swag/issues/1126
https://github.com/swaggo/swag/issues/1132

gin-swagger使用可以参考我的另一篇博文:
goswagger/gin-swagger使用

  相关解决方案