我正在GoPath中编写一个Go项目,并且正在使用Redigo包连接到Redis Server。该应用程序运行良好,但是在VSCode中,导入包时会出现此烦人的错误,这会阻止VSCode提供智能提示建议
Could not import github.com/gomodule/redigo/redis (no package data for import path github.com/gomodule/redigo/redis)
这是我的VSCode settings.json
{
"editor.fontSize": 14,
"editor.formatOnPaste": true,
"editor.multiCursorModifier": "ctrlCmd",
"editor.snippetSuggestions": "top",
"extensions.ignoreRecommendations": false,
"workbench.statusBar.visible": true,
"workbench.iconTheme": "vscode-great-icons",
"files.autoSave": "afterDelay",
"go.useLanguageServer": true,
"go.alternateTools": {
"go-langserver": "bingo"
},
"go.toolsEnvVars": {
"GO111MODULE": "on"
},
"go.languageServerExperimentalFeatures": {
"autoComplete": true,
"documentSymbols": true,
"findReferences": true,
"format": true,
"goToDefinition": true,
"goToTypeDefinition": true,
"hover": true,
"signatureHelp": true,
"rename": true,
"workspaceSymbols": true,
},
"go.lintTool": "golangci-lint",
"go.lintFlags": [
"--fast",
"-E", "goimports",
"-E", "gocritic",
"-E", "gocyclo",
"-E", "gosec",
"-E", "maligned",
"-E", "scopelint",
"-E", "interfacer",
"-E", "goconst",
"-E", "unconvert",
"-E", "unparam",
"-E", "prealloc",
"-E", "varcheck",
],
"go.formatTool": "goimports",
"editor.minimap.enabled": false,
"breadcrumbs.enabled": false,
"git.autofetch": true,
"workbench.startupEditor": "newUntitledFile",
"explorer.confirmDelete": false,
"git.enableSmartCommit": true,
"git.confirmSync": false,
"window.zoomLevel": 0,
"explorer.confirmDragAndDrop": false
}
我已经将GO111MODULE env var设置为on,这是go env
的输出
set GOARCH=amd64
set GOBIN=C:\Users\Francesco\Go\bin
set GOCACHE=C:\Users\Francesco\AppData\Local\go-build
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Users\Francesco\Go
set GOPROXY=
set GORACE=
set GOROOT=c:\go
set GOTMPDIR=
set GOTOOLDIR=c:\go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=C:\Users\Francesco\Go\src\test\go.mod
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\FRANCE~1\AppData\Local\Temp\go-build928398422=/tmp/go-build -gno-record-gcc-switches
要使此功能生效,我应该更改什么?
答案 0 :(得分:5)
我遇到了类似的问题,但情况略有不同。
我在VSCode远程环境中遇到了此问题,甚至net/http
之类的基本库也无法导入。
我发现这是由于同一软件包下的其他文件中的某些语法错误,例如undefined variables
。
解决这些语法错误并重新启动VSCode时,我发现问题已解决。
答案 1 :(得分:2)
在某些特定情况下我会遇到这种情况。这是我的故障排除过程:
您是否运行过go get github.com/gomodule/redigo/redis
?
有时,在与项目不同的根目录中打开编辑器时,我也会遇到类似的问题。
. <- editor open here
|
|_Folder
| main.go
确保您的工具是最新的:运行ctrl
+ shift
+ p
,键入Go
,然后选择Install/Update tools
。
尝试将项目移出GOPATH,并为其设置go.mod。
答案 2 :(得分:2)
当我在一个包中有两个文件而它们的包名不同时,我遇到了这个问题。例如:一个文件包含package main
,而另一个文件包含package app
。
确保所有文件具有相同的程序包名称,将导致整个程序包中的导入重新开始。
答案 3 :(得分:2)
我在使用不同的软件包(在Mac上)时遇到了同样的问题,
ctrl
+ shift
+ p
或cmd
+ shift
+ p
并更新/安装go工具问题已解决