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

如何修复Bazel构建出现的missing strict dependencies错误

问题根因

报错来自全量构建时编译leeroy-web-img目标的严格依赖检查,和单目标构建的go_binary目标无关:

  • 运行bazel build //leeroy-web时,仅触发同名go_binary目标构建,该目标通过embed引用了配置了完整依赖的leeroy-web_lib库,依赖链完整因此构建成功。
  • 运行bazel build //...时,会遍历编译所有目录下的所有Bazel目标,包括定义的go_image目标leeroy-web-img。当前该目标直接通过srcs字段引入web.go源码,但没有声明代码中导入的//leeroy-web/handlers、//sum-pkg两个依赖,直接触发Go规则的严格依赖校验,抛出missing strict dependencies错误。
修复方法

不要在go_image中重复配置源码和导入路径,直接复用已经配置好依赖的go_library,和go_binary的配置逻辑保持一致,避免重复维护依赖导致漏配。
将leeroy-web/BUILD中的go_image规则替换为如下内容:

go_image(
    name = "leeroy-web-img",
    embed = [":leeroy-web_lib"],
    goarch = "amd64",
    goos = "linux",
    static = "on",
)

修改完成后先执行bazel clean清理旧构建缓存,再执行bazel build //...即可完成全量构建。

注:go_image规则本身和go_binary逻辑一致,只要直接传入srcs就必须手动在deps中声明所有源码导入的依赖包,重复配置极易出现漏配。通过embed引用同目录下统一维护的go_library是rules_go官方推荐的标准写法,能从根源避免这类依赖不一致问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:27:25