goland右键“show dependencies diagram”无反应,主因是未启用go modules:需右键项目根目录选“load project with go modules”,并勾选settings→go→go modules中“enable”选项;图表仅显示当前文件或go.mod顶层依赖,非全量require,且不支持直接导出png/svg,仅能截图或复制为图片。

GoLand 里右键“Show Dependencies Diagram”为什么没反应
图不出现,八成不是功能坏了,而是 GoLand 根本没把当前项目当模块项目处理。它不会自动识别 go.mod 文件——哪怕你刚用 go mod init 初始化完。
必须手动触发加载:右键项目根目录 → “Load project with Go Modules”。这步不能跳过,也不能用“Reload project”代替。
- Settings → Go → Go Modules 中,“Enable Go Modules integration”必须勾选
- 多模块项目(多个 go.mod)要逐个右键子目录 → “Mark Directory as → Go Modules Root”
- 终端里跑
go list -m all报错?说明GO111MODULE=on没生效;GoLand 的 Terminal 默认不继承 shell 环境变量,得在 Settings → Tools → Terminal 勾上 Shell integration
点出来的图只显示几个包,连第三方依赖都没有
这不是漏了,是 GoLand 默认只渲染「当前上下文有效」的依赖子图。它不画全量 require 列表,只画当前文件或当前构建配置下真正参与编译的 import 链。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 想看某个
.go文件的实际依赖:光标停在文件里 → 右键 → “Show Dependencies Diagram” - 想看整个模块顶层 require(不含间接依赖):右键项目根目录 → “Show Dependencies Diagram”,但图中只显示
go.mod里的顶层require行,replace后的本地路径、exclude掉的模块都不会出现 - 图里没 vendor 包?正常——默认过滤掉 vendor 目录;需要时在图表右上角点齿轮图标 → 取消勾选 “Hide vendor packages”
- 用了
//go:build ignore或构建约束不匹配?对应包根本不会进图,因为 GoLand 调用的是go list -json -deps,它只处理当前构建 tag 下有效的包
图生成了但没法导出为 PNG/SVG
GoLand 确实没有“Export as PNG”菜单项。官方只提供两种导出方式:截图或复制为图片,仅此而已。
- 截图:Windows/Linux 按
Ctrl+PrintScreen,macOS 按Cmd+Shift+4框选 - 复制为图片:右键图表空白处 → “Copy Diagram to Clipboard”,然后粘贴到支持图片的编辑器(如 macOS 预览、Windows 画图)
- 别信网上说的“设置里能开导出开关”——截至 2026 年 8 月,该功能仍不存在;所有声称一键导出的教程,底层都是调用
go mod graph+dot - 图太大卡死?关闭左下角 “Show standard library” 或右键节点 → “Collapse subtree” 手动收起分支
依赖图里看到循环箭头,但代码明明没循环 import
模块级图(go mod graph 驱动)和包级 import 是两套逻辑。图里出现 A → B → A,大概率不是代码写了循环 import,而是两个不同版本的模块互相拉取,或者 replace 导致路径映射错乱。
- 先确认是不是模块级环:运行
go mod graph | grep 'your-module-name',看是否有多行指向不同版本 - 真正的包级循环(比如
internal/db←internal/api←internal/db)不会出现在 GoLand 的 Modules 图中,得用go list -deps ./...或go-callvis查 - 90% 的“假环”来自测试文件:检查
*_test.go是否意外 import 了生产代码,又反过来被生产代码 import(常见于 mock 工具或 testutil 包设计不当) - 图里节点名带
@v0.0.0-伪版本?说明该模块未打 tag,MVS 规则可能临时选了不稳定快照,容易造成依赖边抖动
internal/ 子包之间或测试文件引入的隐式循环,必须回到源码层用 go list -f '{{.ImportPath}} {{.Deps}}' 逐包排查。










