VSCode中gopls报“index out of range” BrokenImport导入错误
gopls 针对Azure SDK导入报内部索引越界错误(项目可正常编译)
问题详情
在Linux系统下使用VSCode开发Go项目,从昨日开始gopls对多个github.com/Azure/azure-sdk-for-go相关导入项报错,错误信息如下:
could not import github.com/Azure/azure-sdk-for-go/sdk/storage/azblob (import failed for "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob": import failed for "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob": internal error while importing "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob" (runtime error: index out of range [581] with length 7); please report an issue) compiler(BrokenImport)
项目实际可正常编译,推测为gopls自身问题。已尝试重装gopls、Go、VSCode,重置Go环境变量和VSCode设置,均无法解决,且未搜索到同类错误案例。
可行解决方案
锁定gopls或Azure SDK版本
该错误大概率是新版本gopls与Azure SDK的兼容性问题,可尝试:- 降级gopls至稳定版本:
go install golang.org/x/tools/gopls@v0.15.2 - 在
go.mod中固定Azure SDK的具体版本(示例):
执行require github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.20.0go mod tidy同步依赖
- 降级gopls至稳定版本:
清理gopls缓存
删除Linux下gopls的缓存目录,避免缓存损坏导致的问题:rm -rf ~/.cache/gopls重启VSCode后重新加载项目
调整gopls配置
在VSCode的settings.json中添加如下配置,禁用可能触发错误的特性:"gopls": { "analyses": { "unusedparams": false, "unusedwrite": false }, "experimentalWorkspaceModule": false }提交gopls官方issue
这是gopls的内部运行时错误,属于bug范畴,需到gopls仓库提交issue,提交时需包含:go version与gopls version的输出结果- 当前使用的Azure SDK版本
- 完整的报错信息
- 能复现问题的最小代码片段(例如仅包含azblob导入的测试文件)
内容的提问来源于stack exchange,提问作者Yonsken
相关产品推荐
相关产品推荐

