Travis看到了GO函数的旧签名并赢得了';t构建
我在一个GO项目中对Travis CI有一种奇怪的行为 它(此处)失败,抱怨函数只使用1个参数,而被2个参数调用Travis看到了GO函数的旧签名并赢得了';t构建,go,github,travis-ci,Go,Github,Travis Ci,我在一个GO项目中对Travis CI有一种奇怪的行为 它(此处)失败,抱怨函数只使用1个参数,而被2个参数调用 src/finances-service/main.go:45:19: too many arguments in call to route.Register have (*gin.Engine, *controller.TokensController) want (*controller.TokensController) 它过去只接受tokenscoontr
src/finances-service/main.go:45:19: too many arguments in call to route.Register
have (*gin.Engine, *controller.TokensController)
want (*controller.TokensController)
它过去只接受tokenscoontroller
,但现在,在这个pull请求中,它还接受gin.Engine
如果我们看一下,我们可以看到接受这两个参数的函数签名
func Register(
engine *gin.Engine,
tokensController *controller.TokensController,
) {
然后它被称为
和
我不理解这种行为。我确信这其中有一些明显的东西,我只是看不到。我诚恳地请求你的帮助。我已经给Travis CI发送了一封电子邮件,但我仍在等待答复。在这方面寻求各方面的帮助。提前感谢。我刚刚在本地环境中克隆了回购协议,并为
master
和22 banner
分支机构传递了make build
我搞砸了一点,意识到你已经出售了自己的src目录。这绝对不是个好主意
如果您跟踪到route包,它将最终位于供应商文件夹中的某个位置,而不是它应该位于的位置
那么决议是什么 首先,如果您真的想使用Dep,那么您必须将
vendor
目录放在根目录中<代码>Gopkg.*没有它,文件什么都不是
我看到您有三个分支,并且使用相同的依赖项,即使您试图在master
中使用不同(或错误)的签名。正如我上面所说的,你也有自己的包裹出售。您不应该对工作目录中的本地包执行此操作。如果确实需要,可以创建另一个带有版本标记的回购协议
然后,您必须确保您在Travis build上的$GOPATH/src/github.com/
上,您的回购协议必须位于那里
之后,由于您的本地包没有缓存在供应商文件夹中,它将成功地构建在Travis上
注意:出于测试目的,只需清除Dep创建的所有内容,并仅使用
go-get
。这里出现的问题只是关于销售。非常感谢您的回答,@berkant!然而,如果我“兜售”了自己的代码,那是偶然的,因为我不知道它是什么意思。你能解释一下吗?我知道vendor
文件夹是由dep
管理的,但这是我对它的理解。我将/src/financials service
下的所有文件移到根/
下,它在Travis上解决了这个问题。我会称之为胜利。。。但这意味着我在我的回购协议的根目录下被源文件缠住了,我不是一个超级粉丝。你能建议一种更好的方法吗?@Adeynack使用下面的布局:这两种布局都能帮助你保持一个可扩展的文件夹结构。
route.Register(engine, tokensController)
route.Register(testRoute, tokensController)