【问题标题】:Gorename not working: "Rename failed: gorename: can't find package containing"Gorename 不起作用:“重命名失败:gorename:找不到包含的包”
【发布时间】:2018-10-06 10:51:24
【问题描述】:

尝试更改符号时,VSCode 会抛出以下错误:

“重命名失败:gorename:找不到包含 /home/hume/projects/go/main.go 的包”

vscode 1.22.2 x64

go 版本 go1.10.1 linux/amd64

去环境GOPATH /home/hume/projects/go

我的settings.json如下:

{
      "go.toolsGopath": "/home/hume/gotools"
    , "go.autocompleteUnimportedPackages": true
    , "go.inferGopath": true
    , "go.formatTool": "gofmt"
    , "go.vetFlags": [
        "/src"
       ]
}

谢谢。

【问题讨论】:

  • 您的main.go 不在包目录中。从这里开始:How to Write Go Code
  • 这不是问题,我知道它的结构,这只是一个简单的例子。
  • 是的,这是 a 问题。该错误包含表明它不是有效的包路径的路径。我可以在本地重现完全相同的错误,并将文件移动到正确的包目录中可以解决问题。
  • 你是对的;),但是看起来代码应该没有错误,但它不起作用,谢谢!

标签: go visual-studio-code


【解决方案1】:

您可以切换到使用官方 Go 语言服务器 gpls。除了其他特色重命名符号外,无论任何包结构如何,都可以完美运行。

在 VSC 中打开首选项、设置,然后激活 go.useLanguageServer。安装 gpls 后,您就可以开始了。

【讨论】:

  • 在这上面花了一个小时,谢谢!似乎 gorename 试图搜索我的整个 $GOPATH,但在任何使用 gomod 的包上都失败了。这绝对是最好的解决方案
【解决方案2】:

VSCode 使用gorename 命令行工具进行重命名。该工具假设您遵循正确的包结构,但找不到它。在%GOPATH%中创建src目录,即创建目录/home/hume/projects/go/src。在src 中创建另一个目录作为包目录,并将main.go 放在包目录中。您需要在main.go 添加包声明。那么问题就解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    • 2012-09-22
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多