IDE linter 无法解析 Go 本地模块导入
Go local module import can't be resolved by IDE linter
代码编译正常,但是当使用替换指令将包名称映射到本地目录时,Go linter 无法识别它。
我在 VSCode 和 Goland 上都试过了,都出现如下所示的 lint 错误。该图像是额外信息,所有代码和错误消息均以文本格式显示在下方。
存储库:https://github.com/webberwang/go-lint-error
这是文件夹结构:
/core
/calc
math.go
go.mod
/main
app.go
go.mod
// main/app.go
package main
import (
"fmt"
"github.com/codelabstudios/core/calc" <- ERROR "Cannot resolve directory 'core'"
)
func main() {
result := calc.Add(1, 2) <- ERROR "Unresolved reference 'Add'"
fmt.Println("calc.Add(1, 2) => ", result)
}
// main/go.mod
module github.com/codelabstudios/main
go 1.14
require github.com/codelabstudios/core v0.0.0-00010101000000-000000000000
replace github.com/codelabstudios/core => ../core
// core/calc/math.go
package main
import (
"fmt"
"github.com/codelabstudios/core/calc"
)
func main() {
result := calc.Add(1, 2)
fmt.Println("calc.Add(1, 2) => ", result)
}
// core/calc/go.mod
module github.com/codelabstudios/core
go 1.14
经过一些挖掘,我发现“替换”指令是 Vgo 提案的一部分(V 代表版本控制)。这在 1.11 中与 Go 合并。
要修复本地模块导入错误,我们只需要在IDE中启用“Vgo Integration”即可。
代码编译正常,但是当使用替换指令将包名称映射到本地目录时,Go linter 无法识别它。
我在 VSCode 和 Goland 上都试过了,都出现如下所示的 lint 错误。该图像是额外信息,所有代码和错误消息均以文本格式显示在下方。
存储库:https://github.com/webberwang/go-lint-error
这是文件夹结构:
/core
/calc
math.go
go.mod
/main
app.go
go.mod
// main/app.go
package main
import (
"fmt"
"github.com/codelabstudios/core/calc" <- ERROR "Cannot resolve directory 'core'"
)
func main() {
result := calc.Add(1, 2) <- ERROR "Unresolved reference 'Add'"
fmt.Println("calc.Add(1, 2) => ", result)
}
// main/go.mod
module github.com/codelabstudios/main
go 1.14
require github.com/codelabstudios/core v0.0.0-00010101000000-000000000000
replace github.com/codelabstudios/core => ../core
// core/calc/math.go
package main
import (
"fmt"
"github.com/codelabstudios/core/calc"
)
func main() {
result := calc.Add(1, 2)
fmt.Println("calc.Add(1, 2) => ", result)
}
// core/calc/go.mod
module github.com/codelabstudios/core
go 1.14
经过一些挖掘,我发现“替换”指令是 Vgo 提案的一部分(V 代表版本控制)。这在 1.11 中与 Go 合并。
要修复本地模块导入错误,我们只需要在IDE中启用“Vgo Integration”即可。