常见原因是go mod vendor只复制实际编译用到的包,而非go.mod中声明的所有包,如_test.go中的导入、//go:embed间接引用、replace指向外部路径未加-v、私有仓库未设GOPRIVATE等均会导致缺包。go mod vendor 生成失败或 vendor 里缺包,常见原因是什么不是命令没跑,而是 go mod vendor 只复制「当前构建实际用到的包」------它不看 go.mod 里写了什么,只看你的 .go 文件里 import 了哪些、且这些 import 是否参与主模块编译。典型缺包场景:某个包只在 _test.go 文件里被 import,而你运行的是 go build(非 go test),它就不会进 vendor/用了 //go:embed 或 //go:generate 间接引用某包,但没显式 import,go mod vendor 会跳过go.mod 里有 replace 指向本地路径,但该路径不在项目内(比如指向 ../common),默认不复制;需加 -v 参数才尝试包含私有仓库依赖未配置 GOPRIVATE,go mod vendor 直接失败,不是静默跳过验证是否全量:运行 go list -f '{{.Dir}}' all | grep '^vendor/' | wc -l,再对比 go list all | wc -l,数字不一致就说明有遗漏。go build -mod=vendor 仍报错"cannot find module providing package"这说明 Go 工具链压根没走 vendor/,而是试图联网拉包。根本原因几乎都是环境或参数没对齐。立即学习"go语言免费学习笔记(深入)";必须同时满足以下三点,-mod=vendor 才真正生效:GO111MODULE=on(Go 1.16+ 默认开启,但 CI 环境常被重置)当前工作目录下存在有效的 go.mod(不能是父目录或子目录的)命令中明确带上 -mod=vendor ------ go run、go test、go list 全部都要加,不能只给 go build 加容易忽略的点:go list -mod=vendor ./... 是最轻量的验证方式,如果它报错找不到包,那其他命令也一定失败。别等 go build 跑一半才暴露问题。离线构建时,为什么删了 vendor 还不行因为 vendor/ 只是表象,真正决定构建成败的是三样东西:go.mod、go.sum、以及工具链对校验和与代理的处理。 Mokker AI AI产品图添加背景
相关推荐
枫彩11 小时前
A股数据源怎么选?用 Python 验收 AI 复盘的日期与明细2601_9623824311 小时前
Python 代码不可不知的函数式编程技术我不是程序员三三11 小时前
如何监控电脑|企业终端行为监控概念科普与落地方法论2601_9620780311 小时前
Python办公自动化与数据分析实战 培训班2021年小七在进步12 小时前
C++入门(2)用户9385156350712 小时前
Text2SQL 实战:用 DeepSeek 大模型实现自然语言查询 SQLite 数据库lhldsg12 小时前
全民健身解决方案软件开发实战:从架构设计到部署指南我是大猴子12 小时前
线上耗时问题排查2601_9620996812 小时前
Python环境下中文分词实现与应用探索2601_9669496512 小时前
批量获取多只股票五档盘口的极简方案:QuantDash Python SDK 实战指南