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

使用Bazel构建时遇到缺失严格依赖错误的求助

解决Bazel构建Go项目时slices依赖缺失的问题

问题分析

报错显示external/io_ariga_atlas/sql/migrate包中的代码引入了slices,但Bazel构建时未找到对应的依赖。slices包在Go生态中有两个来源:

  • Go 1.21及以上版本的标准库
  • Go 1.21之前的golang.org/x/exp/slices实验包

解决方案

方案1:确认并升级Go SDK版本(推荐)

  1. 检查Bazel使用的Go SDK版本:
    bazel query @go_sdk//:version --output=template --template="{{.}}"
    
  2. 如果版本低于1.21,在WORKSPACE文件中指定Go 1.21+的SDK:
    go_register_toolchains(version = "1.21.0")
    
  3. 修改external/io_ariga_atlas/sql/migrate/BUILD.bazel中的go_library规则,添加标准库依赖:
    go_library(
        name = "migrate",
        srcs = glob(["*.go"]),
        importpath = "ariga.io/atlas/sql/migrate",
        deps = [
            # 保留原有依赖
            "@go_sdk//slices",
        ],
    )
    

方案2:添加golang.org/x/exp/slices依赖(兼容旧Go版本)

  1. 在WORKSPACE文件中引入golang.org/x/exp仓库:
    http_archive(
        name = "org_golang_x_exp",
        urls = ["https://github.com/golang/exp/archive/refs/tags/v0.0.0-20230809160819-4c666bf0b079.zip"],
        strip_prefix = "exp-4c666bf0b079",
        sha256 = "替换为对应版本的sha256校验值",
    )
    
  2. 修改external/io_ariga_atlas/sql/migrate/BUILD.bazel中的依赖:
    go_library(
        name = "migrate",
        srcs = glob(["*.go"]),
        importpath = "ariga.io/atlas/sql/migrate",
        deps = [
            # 保留原有依赖
            "@org_golang_x_exp//slices",
        ],
    )
    

方案3:使用Gazelle自动生成依赖

如果项目用Gazelle管理Go构建规则,直接运行以下命令让Gazelle自动补全缺失的依赖:

bazel run //:gazelle

验证修改

执行原构建命令确认问题解决:

bazel build //cmd/todo:todo

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:25:30