【问题标题】:My main file can't find another file I created that I imported into the main file我的主文件找不到我创建的导入到主文件中的另一个文件
【发布时间】:2016-04-01 08:38:54
【问题描述】:

我的文件结构如下:

- project/
  - src/
    - main/
      - main.go
    - viewmodels/
      - home.go
  - public/

我的项目位于: ~/go/src/

当我尝试运行我的主文件时,它会抛出错误:

src/main/main.go:10:2: cannot find package "viewmodels" in any of:
    /usr/local/Cellar/go/1.5.3/libexec/src/viewmodels (from $GOROOT)
    /Users/nicholasrucci/go/src/viewmodels (from $GOPATH)

看起来 main 在错误的位置寻找 package viewmodels。据我了解,在阅读How to Write Go Code之前的程序运行良好后,我的配置设置正确,但显然有问题。

来自.zshrc的Go相关配置:

export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/opt/go/libexec/bin
export PATH=$PATH:$GOPATH/bin
export PATH=$PATH:/usr/local/go/bin

ma​​in.go的片段:

package main

import (
    "bufio"
    "log"
    "net/http"
    "os"
    "strings"
    "text/template"
    "viewmodels"
)

home.go 的片段:

package viewmodels

import ()

任何关于正在发生的事情以及我如何解决这个问题的方向都会很棒。谢谢。

【问题讨论】:

    标签: go


    【解决方案1】:

    您应该使用完整的包名作为导入路径:"project/src/viewmodels" 在这种情况下,假设项目位于 /Users/nicholasrucci/go/src 下,但我会以不同的方式构建您的项目文件夹(例如没有 src 文件夹)

    或者,您可以将您的 GOPATH 设置为项目文件夹的完全限定路径,这样您的 main.go 就可以像您拥有的那样转到 import "viewmodels"

    【讨论】:

    • 这确实成功了。我也不知道可以为每个项目设置一个 GOPATH。谢谢。
    • 请记住,如果您这样做,您所有的 go get 依赖项都将安装在您的 project/src 文件夹下。
    【解决方案2】:

    这对我来说很好用:

    src/main/main.go

    package main
    
    import (
        "viewmodels"
    )
    
    func main() {
        viewmodels.Something()
    }
    

    src/viewmodels/home.go

    package viewmodels
    
    import ()
    
    func Something() {
    
    }
    

    我猜这是你的环境变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-22
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      相关资源
      最近更新 更多