如何解决go-swagger restapi/configure_todo_list.go - api.TodoGetHandler 未定义错误
我是 go
和 go-swagger
的新手。我正在按照 goswagger.io 中的 Simple Server 教程中的步骤进行操作。
我正在使用 Ubuntu 18.04
、swagger v0.25.0
和 go 1.15.6
。
Link to screenshot of my generated files 对比 Link to screenshot of generated files by swagger.io
# my_folder/swagger-todo-list/restapi
restapi/configure_todo_list.go:41:8: api.TodosGetHandler undefined (type *operations.TodoListAPI has no field or method TodosGetHandler)
restapi/configure_todo_list.go:42:6: api.TodosGetHandler undefined (type *operations.TodoListAPI has no field or method TodosGetHandler)
-
goswagger.io todo-list 中的第一步是
swagger init spec ...
。我应该在哪个目录中运行这个命令?我在我的主目录中一个新创建的文件夹中运行它。但是,从页面上看,它显示的路径是~/go/src/github.com/go-swagger/go-swagger/examples/tutorials/todo-list
。我不确定是否应该使用go get ...
、git clone ...
或创建这些文件夹。有人能给我建议吗?
谢谢。
解决方法
-
这可能是文档滞后于您正在运行的代码版本。只要编译通过,工具生成的具体文件就不是那么重要了。
-
这是一个编译错误。当您执行
go install foo
时,它会尝试将 foo 包构建为可执行文件,然后将其移动到您的GOPATH/bin
目录。restapi/configure_todo_list.go
中生成的代码似乎与生成的operations
代码不正确。 -
您自己运行本教程所需的只是一个空目录和 swagger 工具(不是它的源代码)。您从这个空项目的根运行命令。为了不遇到 GOPATH 问题,我会在做任何其他事情之前用
go mod init todo-list-example
初始化一个模块。 请注意,虽然待办事项列表示例代码存在于 go-swagger 源代码中,但它仅用于记录示例使用和输出。
我对 #2 的建议是确保您使用的是正确发布的 go-swagger 版本,而不是从最新提交安装(当您只执行 go get
时会发生这种情况),因为我发现它偶尔会不稳定。
接下来,重新生成整个服务器,但请确保您还通过将 restapi/configure_todo_list.go
传递给您的 --regenerate-configureapi
调用来重新生成 swagger generate
。此文件并不总是刷新,因为您打算对其进行修改以配置您的应用,并且如果您更改了该工具的版本,它可能会有所不同且不兼容。
如果之后您仍然遇到编译错误,则可能值得在 https://github.com/go-swagger/go-swagger/issues 提交错误报告。
,谢谢@EzequielMuns。在我按照
中的说明运行go get - u -f ./...
后,#2 中的错误消失了
...
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 ./...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。