go-kiss/sniper

脚手架使用单独入口之后出现问题

Opened this issue · 7 comments

安装所需扩展、执行git clone https://github.com/bilibili/sniper.git .、执行go run cmd/sniper/main.go rpc --service=foo均无报错.
但执行go run main.go server --port=8080时出错
build command-line-arguments: cannot load sniper/cmd/falsework: malformed module path "sniper/cmd/falsework": missing dot in first path element
删除掉main.go的falsework内容后重新执行,出错改为

# sniper/cmd/server
cmd/server/http.go:28:33: cannot use hooks (type *"github.com/bilibili/twirp".ServerHooks) as type *"github.com/twitchtv/twirp".ServerHooks in argument to foo_v1.NewFooServer
cmd/server/main.go:137:9: too many arguments in call to initMux
	have (*http.ServeMux, bool)
	want (*http.ServeMux)

请问如何解决?望回复,谢谢

flazx commented

falsework去除就可以了,不要引入这个~~

falsework去除就可以了,不要引入这个~~

好的,main.go去除了falsework,请问还需要去除其他地方的吗?对Go不是很熟悉......

taoso commented

之前 falsework 是项目代码的一部分。如果生成的代码有问题会导致编译失败,进而 falsework 子命令也无法使用。现在移除了 falsework 子命令,引入了独立的 sniper 命令来解决这个问题。

@flyqieqq 提到的另一个问题貌似还会复现,执行如下命令:

go run cmd/sniper/main.go rpc --service=foo
go run main.go server --port=8080

提示:
image
是不是要把cmd/server/main.go中的

initMux(mux, isInternal)

改为:

initMux(mux)
taoso commented

需要把initMux(mux)改为initMux(mux, isInternal),可能你的main.go是之前生成的。

好的,感谢,那我再试一下

需要把initMux(mux)改为initMux(mux, isInternal),可能你的main.go是之前生成的。

应该是 initMux(mux, isInternal) 改为 initMux(mux) 吧? 我看 master 调用处传了两个参数,实际上 cmd/server/http.go 的 initMux 方法只接收一个参数