42

我正在我的 GoPath 中编写一个 Go 项目,并且我正在使用 Redigo 包连接到 Redis 服务器。应用程序运行良好,但是在 VSCode 中,包导入时出现这个烦人的错误,这会阻止 VSCode 提供智能感知建议

无法导入 github.com/gomodule/redigo/redis(没有导入路径 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

我应该改变什么才能使这项工作?

4

9 回答 9

88

在一些特定情况下,这会发生在我身上。这是我的故障排除过程:

  1. 你跑了go get github.com/gomodule/redigo/redis吗?

  2. 有时,当我在与项目不同的根目录中打开编辑器时,我会遇到类似的问题。

.  <- editor open here
| 
|_Folder
  | main.go
  1. 确保您的工具是最新的:运行++ ctrl,输入并选择.shiftpGoInstall/Update tools

  2. 尝试将您的项目移出 GOPATH,并为其设置 go.mod。

  3. 重启编辑器

于 2019-10-23T13:52:00.317 回答
21

我对不同的包(在mac上)有同样的问题,

  1. 更新 go 工具 - ctrl+ shift+pcmd++shiftp更新/安装 go 工具
  2. 重启VScode

问题已解决

于 2020-11-19T23:40:10.340 回答
7

我遇到了类似的问题,但情况略有不同。我在VSCode远程遇到这个问题,连基础库之类的net/http都无法导入。我发现是因为同一个包下的其他文件有一些语法错误,比如undefined variables. 当我解决了这些语法错误并重新启动 VSCode 后,我发现问题解决了。

于 2020-07-22T06:31:39.963 回答
2

当我在一个包中有两个具有不同包名的文件时遇到了这个问题。例如:一个文件有package main,而另一个有package app.

确保所有文件具有相同的包名称将导致跨包导入以重新开始工作。

于 2020-10-05T20:37:36.577 回答
1

go mod init package_name其次是go mod tidy让事情为我工作。go mod tidy安装了软件包并更新了 mod 文件。

于 2021-10-20T05:56:15.037 回答
0

目录名称中可能存在无效字符。

于 2021-12-15T11:45:46.123 回答
0

我已经安装在 Fedora 35 gcc-go上,卸载后一切正常。

sudo dnf remove gcc-go
于 2021-12-29T18:39:33.010 回答
0

我最近遇到了同样的错误,我的解决方案是确保我的项目 mod 文件的 go 版本与我系统上安装的版本相同。

于 2021-09-01T02:51:07.610 回答
0

我遇到了同样的问题,go mod init packegeName并且将我的包命名为“time”,编辑器给了我错误,所以我只是用“timee”替换它,我不知道实际发生了什么,但它工作正常

于 2021-12-09T07:23:43.530 回答