golangci-lint报错‘can't load fmt’问题求助
解决golangci-lint v1.54.2启动panic问题
问题场景
通过以下命令安装golangci-lint v1.54.2:
# binary will be $(go env GOPATH)/bin/golangci-lint curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.54.2
安装日志显示成功完成:
golangci/golangci-lint info found version: 1.54.2 for
v1.54.2/darwin/amd64 golangci/golangci-lint info installed
/Users/prajeeshb/go/bin/golangci-lint
但执行golangci-lint --version时触发panic错误:
panic: load embedded ruleguard rules: rules/rules.go:13: can't load fmt goroutine 1 [running]: github.com/go-critic/go-critic/checkers.init.22() github.com/go-critic/go-critic@v0.6.3/checkers/embedded_rules.go:47 +0x4b4
解决方法
方法1:升级到修复版本
该问题是golangci-lint v1.54.2的已知bug,后续版本已修复。卸载旧版本后安装v1.54.3或更高版本:
# 卸载当前版本 rm $(go env GOPATH)/bin/golangci-lint # 安装v1.54.3 curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.54.3
方法2:临时禁用go-critic检查器
如果必须使用v1.54.2版本,可以通过禁用引发问题的go-critic检查器绕过panic:
- 单次命令执行时添加参数:
golangci-lint --disable go-critic --version
- 全局或项目持久化配置(在
.golangci.yml中添加):
linters: disable: - go-critic
方法3:清理缓存后重新安装
若因安装缓存异常导致问题,可清理Go模块缓存后重新安装:
# 清理Go模块缓存 go clean -modcache # 卸载旧版本 rm $(go env GOPATH)/bin/golangci-lint # 重新安装v1.54.2 curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.54.2
注意:此方法仅作为临时尝试,优先推荐方法1彻底解决问题。
内容的提问来源于stack exchange,提问作者prajeesh
相关产品推荐
相关产品推荐

