VSCode: 无法导入 Golang 包
VSCode: Could not import Golang package
我正在我的 GoPath 中编写一个 Go 项目,我正在使用 Redigo 包连接到 Redis 服务器。应用程序运行良好,但是在 VSCode 中,包导入时出现这个烦人的错误,这会阻止 VSCode 提供智能建议
Could not import github.com/gomodule/redigo/redis (no package data for import path github.com/gomodule/redigo/redis)
这是我的VSCodesettings.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 环境变量设置为打开,这是 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
我应该更改什么才能使其正常工作?
在一些特定情况下,我会遇到这种情况。这是我的故障排除过程:
你运行go get github.com/gomodule/redigo/redis
了吗?
有时,当我在与我的项目不同的根目录中打开我的编辑器时,我会遇到类似的问题。
. <- editor open here
|
|_Folder
| main.go
确保您的工具是最新的:运行 ctrl
+ shift
+ p
,输入 Go
并选择Install/Update tools
.
尝试将您的项目移出 GOPATH,并为其设置 go.mod。
重启编辑器
我遇到了类似的问题,但情况略有不同。
我在VSCode远程遇到了这个问题,连net/http
这样的基础库都导入不了。
我发现是因为同一个包下的其他文件有些语法错误,比如undefined variables
。
当我解决了这些语法错误并重新启动VSCode后,我发现问题已经解决了
当我在一个包中有两个包名称不同的文件时,我 运行 陷入了这个问题。例如:一个文件有 package main
而另一个文件有 package app
.
确保所有文件具有相同的包名称将导致跨包的导入再次开始工作。
我在另一个包上遇到了同样的问题(在 mac),
- 更新 go 工具 -
ctrl
+ shift
+ p
或 cmd
+ shift
+ p
和 update/install go tools
- 重启VScode
问题已解决
我最近 运行 遇到了同样的错误,我的解决方案是确保我的项目 mod 文件的 go 版本与我系统上安装的版本相同。
go mod init package_name
后跟 go mod tidy
让事情对我有用。 go mod tidy
安装了软件包并更新了 mod 文件。
我遇到了同样的问题,它来自 go mod init packegeName
,我的包名为 'time',编辑器给我错误,所以我只是用 'timee' 替换它,我不知道是什么实际上发生了,但它工作正常
目录名中可能存在无效字符。
我已经在 Fedora 35 上安装了 gcc-go,卸载后一切正常。
sudo dnf remove gcc-go
我正在我的 GoPath 中编写一个 Go 项目,我正在使用 Redigo 包连接到 Redis 服务器。应用程序运行良好,但是在 VSCode 中,包导入时出现这个烦人的错误,这会阻止 VSCode 提供智能建议
Could not import github.com/gomodule/redigo/redis (no package data for import path github.com/gomodule/redigo/redis)
这是我的VSCodesettings.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 环境变量设置为打开,这是 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
我应该更改什么才能使其正常工作?
在一些特定情况下,我会遇到这种情况。这是我的故障排除过程:
你运行
go get github.com/gomodule/redigo/redis
了吗?有时,当我在与我的项目不同的根目录中打开我的编辑器时,我会遇到类似的问题。
. <- editor open here
|
|_Folder
| main.go
确保您的工具是最新的:运行
ctrl
+shift
+p
,输入Go
并选择Install/Update tools
.尝试将您的项目移出 GOPATH,并为其设置 go.mod。
重启编辑器
我遇到了类似的问题,但情况略有不同。
我在VSCode远程遇到了这个问题,连net/http
这样的基础库都导入不了。
我发现是因为同一个包下的其他文件有些语法错误,比如undefined variables
。
当我解决了这些语法错误并重新启动VSCode后,我发现问题已经解决了
当我在一个包中有两个包名称不同的文件时,我 运行 陷入了这个问题。例如:一个文件有 package main
而另一个文件有 package app
.
确保所有文件具有相同的包名称将导致跨包的导入再次开始工作。
我在另一个包上遇到了同样的问题(在 mac),
- 更新 go 工具 -
ctrl
+shift
+p
或cmd
+shift
+p
和 update/install go tools - 重启VScode
问题已解决
我最近 运行 遇到了同样的错误,我的解决方案是确保我的项目 mod 文件的 go 版本与我系统上安装的版本相同。
go mod init package_name
后跟 go mod tidy
让事情对我有用。 go mod tidy
安装了软件包并更新了 mod 文件。
我遇到了同样的问题,它来自 go mod init packegeName
,我的包名为 'time',编辑器给我错误,所以我只是用 'timee' 替换它,我不知道是什么实际上发生了,但它工作正常
目录名中可能存在无效字符。
我已经在 Fedora 35 上安装了 gcc-go,卸载后一切正常。
sudo dnf remove gcc-go