go - go-swagger 自动生成的代码中出现“不允许导入周期”错误
问题描述
我在 go-swagger 自动生成的文件中遇到错误“不允许导入循环”,下面是代码。我还阅读了与此问题相关的其他答案,但没有成功。如果需要任何其他信息,请发表评论。
提前致谢
items_swagger.yaml
---
swagger: "2.0"
info:
description: Item list swagger for performing various op like create , delete , update.
title: ItemList
version: 1.0.0
consumes:
- application/json
produces:
- application/json
schemes:
- http
paths:
/createItem:
post:
tags:
- createItem
operationId: createOne
parameters:
- name: body
in: body
schema:
$ref: '#/definitions/item'
responses:
200:
description: Created
schema:
$ref: '#/definitions/item'
default:
description:
error
schema:
$ref: "#/definitions/error"
/updateItem:
put:
tags:
- updateItem
operationId: updateone
parameters:
- name: body
in: body
schema:
$ref: "#/definitions/item"
responses:
200:
description: OK
schema:
$ref: "#/definitions/item"
default:
description: error
schema:
$ref: "#/definitions/error"
/deleteItems:
delete:
tags:
- deleteItem
operationId: purgeItems
responses:
204:
description: Deleted
default:
description: error
schema:
$ref: "#/definitions/error"
definitions:
item:
type: object
required:
- id
- itemName
properties:
id:
type: integer
format: int64
readOnly: false
itemName:
type: string
format: string
readOnly: false
error:
type: object
required:
- message
- code
properties:
code:
type: integer
format: int
message:
type: string
当我生成它的模型时,它正在成功生成。
beast@beast-VirtualBox:~/Documents/WorkSpace_Go/ItemsSwagger/src$ swagger generate server -A ItemsSwagger -f ../swagger/items-swagger.yml -t generate
2020/04/14 20:25:19 validating spec /home/beast/Documents/WorkSpace_Go/ItemsSwagger/swagger/items-swagger.yml
2020/04/14 20:25:21 preprocessing spec with option: minimal flattening
2020/04/14 20:25:21 building a plan for generation
2020/04/14 20:25:21 generation target generate
2020/04/14 20:25:21 planning definitions
2020/04/14 20:25:21 planning operations
2020/04/14 20:25:21 grouping operations into packages
2020/04/14 20:25:21 planning meta data and facades
2020/04/14 20:25:21 rendering 2 models
2020/04/14 20:25:21 rendering 1 templates for model error
2020/04/14 20:25:21 name field error
2020/04/14 20:25:21 package field models
2020/04/14 20:25:21 creating generated file "error.go" in "generate/models" as definition
2020/04/14 20:25:21 executed template asset:model
2020/04/14 20:25:21 rendering 1 templates for model item
2020/04/14 20:25:21 name field item
2020/04/14 20:25:21 package field models
2020/04/14 20:25:21 creating generated file "item.go" in "generate/models" as definition
2020/04/14 20:25:21 executed template asset:model
2020/04/14 20:25:21 rendering 3 operation groups (tags)
2020/04/14 20:25:21 rendering 1 operations for create_item
2020/04/14 20:25:21 rendering 4 templates for operation ItemsSwagger
2020/04/14 20:25:21 name field createOne
2020/04/14 20:25:21 package field create_item
2020/04/14 20:25:21 creating generated file "create_one_parameters.go" in "generate/restapi/operations/create_item" as parameters
2020/04/14 20:25:21 executed template asset:serverParameter
2020/04/14 20:25:21 name field createOne
2020/04/14 20:25:21 package field create_item
2020/04/14 20:25:21 creating generated file "create_one_urlbuilder.go" in "generate/restapi/operations/create_item" as urlbuilder
2020/04/14 20:25:21 executed template asset:serverUrlbuilder
2020/04/14 20:25:21 name field createOne
2020/04/14 20:25:21 package field create_item
2020/04/14 20:25:21 creating generated file "create_one_responses.go" in "generate/restapi/operations/create_item" as responses
2020/04/14 20:25:21 executed template asset:serverResponses
2020/04/14 20:25:21 name field createOne
2020/04/14 20:25:21 package field create_item
2020/04/14 20:25:21 creating generated file "create_one.go" in "generate/restapi/operations/create_item" as handler
2020/04/14 20:25:21 executed template asset:serverOperation
2020/04/14 20:25:21 rendering 0 templates for operation group ItemsSwagger
2020/04/14 20:25:21 rendering 1 operations for delete_item
2020/04/14 20:25:21 rendering 4 templates for operation ItemsSwagger
2020/04/14 20:25:21 name field purgeItems
2020/04/14 20:25:21 package field delete_item
2020/04/14 20:25:21 creating generated file "purge_items_parameters.go" in "generate/restapi/operations/delete_item" as parameters
2020/04/14 20:25:21 executed template asset:serverParameter
2020/04/14 20:25:21 name field purgeItems
2020/04/14 20:25:21 package field delete_item
2020/04/14 20:25:21 creating generated file "purge_items_urlbuilder.go" in "generate/restapi/operations/delete_item" as urlbuilder
2020/04/14 20:25:21 executed template asset:serverUrlbuilder
2020/04/14 20:25:21 name field purgeItems
2020/04/14 20:25:21 package field delete_item
2020/04/14 20:25:21 creating generated file "purge_items_responses.go" in "generate/restapi/operations/delete_item" as responses
2020/04/14 20:25:21 executed template asset:serverResponses
2020/04/14 20:25:21 name field purgeItems
2020/04/14 20:25:21 package field delete_item
2020/04/14 20:25:21 creating generated file "purge_items.go" in "generate/restapi/operations/delete_item" as handler
2020/04/14 20:25:21 executed template asset:serverOperation
2020/04/14 20:25:21 rendering 0 templates for operation group ItemsSwagger
2020/04/14 20:25:21 rendering 1 operations for update_item
2020/04/14 20:25:21 rendering 4 templates for operation ItemsSwagger
2020/04/14 20:25:21 name field updateone
2020/04/14 20:25:21 package field update_item
2020/04/14 20:25:21 creating generated file "updateone_parameters.go" in "generate/restapi/operations/update_item" as parameters
2020/04/14 20:25:21 executed template asset:serverParameter
2020/04/14 20:25:21 name field updateone
2020/04/14 20:25:21 package field update_item
2020/04/14 20:25:21 creating generated file "updateone_urlbuilder.go" in "generate/restapi/operations/update_item" as urlbuilder
2020/04/14 20:25:21 executed template asset:serverUrlbuilder
2020/04/14 20:25:21 name field updateone
2020/04/14 20:25:21 package field update_item
2020/04/14 20:25:21 creating generated file "updateone_responses.go" in "generate/restapi/operations/update_item" as responses
2020/04/14 20:25:21 executed template asset:serverResponses
2020/04/14 20:25:21 name field updateone
2020/04/14 20:25:21 package field update_item
2020/04/14 20:25:21 creating generated file "updateone.go" in "generate/restapi/operations/update_item" as handler
2020/04/14 20:25:21 executed template asset:serverOperation
2020/04/14 20:25:21 rendering 0 templates for operation group ItemsSwagger
2020/04/14 20:25:21 rendering support
2020/04/14 20:25:21 rendering 6 templates for application ItemsSwagger
2020/04/14 20:25:21 name field ItemsSwagger
2020/04/14 20:25:21 package field operations
2020/04/14 20:25:21 name field ItemsSwagger
2020/04/14 20:25:21 package field operations
2020/04/14 20:25:21 creating generated file "main.go" in "generate/cmd/items-swagger-server" as main
2020/04/14 20:25:21 executed template asset:serverMain
2020/04/14 20:25:21 name field ItemsSwagger
2020/04/14 20:25:21 package field operations
2020/04/14 20:25:21 creating generated file "embedded_spec.go" in "generate/restapi" as embedded_spec
2020/04/14 20:25:21 executed template asset:swaggerJsonEmbed
2020/04/14 20:25:21 name field ItemsSwagger
2020/04/14 20:25:21 package field operations
2020/04/14 20:25:21 creating generated file "server.go" in "generate/restapi" as server
2020/04/14 20:25:21 executed template asset:serverServer
2020/04/14 20:25:21 name field ItemsSwagger
2020/04/14 20:25:21 package field operations
2020/04/14 20:25:21 creating generated file "items_swagger_api.go" in "generate/restapi/operations" as builder
2020/04/14 20:25:21 executed template asset:serverBuilder
2020/04/14 20:25:21 name field ItemsSwagger
2020/04/14 20:25:21 package field operations
2020/04/14 20:25:21 creating generated file "doc.go" in "generate/restapi" as doc
2020/04/14 20:25:21 executed template asset:serverDoc
2020/04/14 20:25:21 Generation completed!
For this generation to compile you need to have some packages in your GOPATH:
* github.com/go-openapi/runtime
* github.com/jessevdk/go-flags
You can get these now with: go get -u -f generate/...
当我尝试启动服务器时,此处发生错误。
beast@beast-VirtualBox:~/Documents/WorkSpace_Go/ItemsSwagger/src$ go run generate/cmd/items-swagger-server/main.go
import cycle not allowed
package main
imports generate/restapi
imports context
imports errors
imports internal/reflectlite
imports runtime
imports internal/cpu
imports runtime
beast@beast-VirtualBox:~/Documents/WorkSpace_Go/ItemsSwagger/src$
去环境输出
beast@beast-VirtualBox:~/Documents/WorkSpace_Go/ItemsSwagger/src$ go env
GOARCH="amd64"
GOBIN="/home/beast/Documents/WorkSpace_Go/ItemsSwagger/bin"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/beast/Documents/WorkSpace_Go/ItemsSwagger/"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
编辑 1:谢谢 Volker 我可以通过重新安装 go 来解决“导入循环错误”,这是由 go_1.6 和 go_1.9 版本引起的冲突。
我再次运行“运行”命令,但没有成功。
beast@beast-VirtualBox:~/Documents/WorkSpace_Go/ItemsSwagger/src$ go run generate/cmd/items-swagger-server/main.go
# github.com/go-openapi/validate
github.com/go-openapi/validate/spec.go:46:16: undefined: loads.Document
github.com/go-openapi/validate/spec.go:57:16: undefined: loads.Document
github.com/go-openapi/validate/spec.go:59:16: undefined: loads.Document
github.com/go-openapi/validate/spec.go:75:10: undefined: loads.Document
github.com/go-openapi/validate/spec.go:78:21: undefined: loads.Document
# github.com/go-openapi/runtime/middleware/untyped
github.com/go-openapi/runtime/middleware/untyped/api.go:33:19: undefined: loads.Document
github.com/go-openapi/runtime/middleware/untyped/api.go:54:19: undefined: loads.Document
beast@beast-VirtualBox:~/Documents/WorkSpace_Go/ItemsSwagger/src$
我搜索了我在这里找到的唯一有用的错误链接。我还尝试通过删除旧的 .
任何建议都会有所帮助。
解决方案
正如@Volker 在评论中建议的那样,“不允许导入周期”通过再次进行全新安装来解决。该问题是由版本 1.6 和 1.14 的多个“Go”安装引起的。重新安装 1.14 版修复了它。
其次,通过触发存储依赖项的命令“swagger generate server -A ItemsSwagger -f ../swagger/items-swagger.yml”解决了我遇到的关于“loads.Document undefined”的问题,所以我认为有与路径相关的依赖问题,“Go”无法找到它。
对于不熟悉 go-swagger 的人,请参考以下链接:
https://github.com/go-swagger/go-swagger
https://goswagger.io/tutorial/todo-list.html
https://www.ribice.ba/swagger-golang/
重新安装“Go”:
https://askubuntu.com/questions/742078/uninstalling-go-golang
推荐阅读
- android - asynctask 函数无法识别结果值
- javascript - Firebase 身份验证,firebase 未定义
- actions-on-google - 如何让用户权利在对话中持续存在
- php - 在 MySQL Query 中返回所有 wows、mached 和 unmatched
- rxjs - 如果在throttleTime 超时期间触发事件,则在超时完成后重播最后一个事件并再次开始超时
- python - 复制python文件中的最后一行并在添加新行之前对其进行修改
- ios - 为什么 AWSCognitoCredentialsProvider.getIdentityId().continueWith(block:) 不运行它的块?
- react-native - 当状态/道具改变时,反应原生动画部分列表跳到顶部
- azure - 同一 Azure 资源组项目中的多个逻辑应用
- swift - 如何让 App-to-Per-App VPN 在 MAC OSX 上运行?