遇到问题

通过 kratos-layout 构建项目时报错

> go generate ./...
../../pkg/mod/github.com/google/wire@v0.5.0/cmd/wire/main.go:34:2: missing go.sum entry for modu
le providing package github.com/google/subcommands (imported by github.com/google/wire/cmd/wire); to add:
        go get github.com/google/wire/cmd/wire@v0.5.0
../../pkg/mod/github.com/google/wire@v0.5.0/internal/wire/copyast.go:21:2: missing go.sum entry 
for module providing package golang.org/x/tools/go/ast/astutil (imported by github.com/google/wire/interna
l/wire); to add:
        go get github.com/google/wire/internal/wire@v0.5.0
../../pkg/mod/github.com/google/wire@v0.5.0/internal/wire/parse.go:30:2: missing go.sum entry fo
r module providing package golang.org/x/tools/go/packages (imported by github.com/google/wire/internal/wir
e); to add:
        go get github.com/google/wire/internal/wire@v0.5.0
../../pkg/mod/github.com/google/wire@v0.5.0/internal/wire/analyze.go:26:2: missing go.sum entry 
for module providing package golang.org/x/tools/go/types/typeutil (imported by github.com/google/wire/cmd/
wire); to add:
        go get github.com/google/wire/cmd/wire@v0.5.0
cmd/reviewise/wire_gen.go:3: running "go": exit status 1

排查问题

确定 go.mod 的依赖都正确安装后再尝试还是报同样的错

翻阅 issues 后找到问题

这个错误实际上是cmd/{PROJECT}/wire_gen.go中的//go:generate go run github.com/google/wire/cmd/wire报出的,和是否安装wire无关

解决问题

两种方式

  • go get -d github.com/google/wire/cmd/wire@v0.5.0

  • 新建一个 cmd/{PROJECT}/tools.go, PROJECT 是你的wire.go的文件夹

    //go:build tools
    // +build tools
     
    package main
     
    import (
    	_ "github.com/google/wire/cmd/wire"
    )

    接着执行下面的代码即可

    # 更新依赖
    go mod tidy
    go generate ./..

参考