Go 1.17运行go mod tidy出现operation not permitted报错是什么原因
报错原因
该问题由Go 1.16+版本的模块扫描逻辑和macOS系统权限限制共同导致:
- Go 1.16及后续版本调整了
go mod tidy的执行逻辑,运行时会默认扫描当前模块根目录下的所有文件、子目录,用来匹配依赖的导入路径 - 最常见的诱因是你误将Go模块的根目录初始化在了macOS用户根目录
/Users/Jumpman下,而非独立的项目目录,扫描范围覆盖了整个用户文件夹,触发了系统对.Trash(废纸篓)等受保护目录的访问限制 - macOS从Catalina版本开始新增了隐私访问限制,未获得全磁盘权限的终端无法读取系统保护路径,就会返回
operation not permitted错误
修复方案
- 修正工作路径(推荐)
运行pwd查看当前终端所在路径,如果确实是用户根目录,直接删除该目录下误生成的go.mod和go.sum文件,cd到你实际的Go项目目录后,重新执行go mod init <你的项目标识>,再运行go mod tidy即可 - 开放终端权限
如果你确实需要在用户根目录下维护Go模块,可打开macOS「系统设置」→「隐私与安全性」→「全磁盘访问」,勾选你使用的终端工具(系统终端Terminal/第三方终端iTerm2等),重启终端后重新执行命令即可 - 临时规避
执行go mod tidy -e,命令会忽略路径访问类的错误,仅输出警告信息,继续完成依赖整理操作
内容的提问来源于stack exchange,提问作者user15173250
相关产品推荐
相关产品推荐

