IDE linter 无法解析 Go 本地模块导入

代码编译得很好,但是当使用 replace 指令将包名称映射到本地目录时,Go linter 无法选择它。

我在 VSCode 和 Goland 上都试过这个,两者都有如下所示的 lint 错误。该图像是额外信息,所有代码和错误消息都以文本格式显示在下面。

http://img2.mukewang.com/628b468d0001896025561187.jpg

存储库: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


白猪掌柜的
浏览 152回答 1
1回答

慕沐林林

经过一番挖掘,我发现“替换”指令是 Vgo 提案的一部分(V 代表版本控制)。这在 1.11 中与 Go 合并。要修复本地模块导入错误,我们只需要在 IDE 中启用“Vgo 集成”即可。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go