You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Google Wire构建可变参数函数时遇包查找错误,求排查

Google Wire 命令执行报错的原因及解决办法

1. Vendor 目录导致包查找异常

报错路径指向/opt/workspace/project/vendor/github.com/google/wire/cmd/wire,说明Go模块优先从本地vendor目录查找wire命令包,但该目录下并未包含完整的wire命令代码。

解决方式:

  • 若无需保留vendor目录,直接删除该目录后重新执行命令。
  • 若需要保留vendor目录,先执行以下命令将所有依赖包同步到vendor:
    go mod vendor
    
    完成后再尝试运行wire命令。

2. 推荐全局安装Wire命令

使用go run方式运行wire会受模块依赖、vendor配置影响,稳定性较差。更稳妥的方式是全局安装wire命令:

go install github.com/google/wire/cmd/wire@latest

安装完成后,直接在项目目录下执行:

wire ./internal/wire

即可正常生成依赖注入代码。

3. 补充:你的Wire初始化代码存在逻辑问题

除了命令执行的问题,当前的初始化函数写法有误:

  • wire.Build应该传入构造函数而非类型,你当前写的repository.RepositoryRegistry是类型,正确的应该是repository.NewRepositoryRegistry。
  • 还需要将db、UserRepository等依赖的提供函数或构造函数加入wire.Build参数,示例如下:
    func initializeRepository(cfg *config.Config) (*repository.RepositoryRegistry, error) {
        wire.Build(
            provideDB, // 假设该函数负责提供db实例
            repository.NewUserRepository,
            repository.NewRepositoryRegistry,
        )
    
        return nil, nil
    }
    

内容的提问来源于stack exchange,提问作者Rodrigo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 23:40:22