Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Travis看到了GO函数的旧签名并赢得了';t构建_Go_Github_Travis Ci - Fatal编程技术网

Travis看到了GO函数的旧签名并赢得了';t构建

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

我在一个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)
它过去只接受
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)