【问题标题】:Why is goapp test is looking for files in /tmp?为什么 goapp test 在 /tmp 中寻找文件?
【发布时间】:2017-06-16 14:56:04
【问题描述】:

我正在尝试在我的本地开发机器上进行测试 Cloud SDK 版本是:159.0.0

我读到的所有内容都说我不应该更改 GOROOT,所以我不知道如何解决这个问题。

$ /Users/bryan/google-cloud-sdk/platform/google_appengine/goroot/bin/goapp 测试

go: cannot find GOROOT directory: /tmp/go_sdk887571938/appengine/go_appengine/goroot

bryan@Bryans-MacBook 星期四 6 月 15 日 10:22:37 ~/go/src/skincarereview

$ 去环境

GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/bryan/go/"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GO15VENDOREXPERIMENT="1"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1"

bryan@Bryans-MacBook 星期四 6 月 15 日 10:22:57 ~/go/src/skincarereview

$ ls ~/google-cloud-sdk

total 408
drwxr-xr-x  30 bryan  staff    1020 Jun 14 20:31 .install
-rw-r--r--   1 bryan  staff     980 Jun 14 20:30 LICENSE
-rw-r--r--   1 bryan  staff     673 Jun 14 20:30 README
-rw-r--r--   1 bryan  staff  162673 Jun 14 20:30 RELEASE_NOTES
-rw-r--r--   1 bryan  staff       8 Jun 14 20:30 VERSION
drwxr-xr-x  10 bryan  staff     340 Jun 14 20:30 bin
-rw-r--r--   1 bryan  staff    2734 Jun 14 20:30 completion.bash.inc
-rw-r--r--   1 bryan  staff    2083 Jun 14 20:30 completion.zsh.inc
drwxr-xr-x   3 bryan  staff     102 Jun 14 20:30 help
-rwxr-xr-x   1 bryan  staff    1581 Jun 14 20:30 install.bat
-rwxr-xr-x   1 bryan  staff    3471 Jun 14 20:30 install.sh
drwxr-xr-x  10 bryan  staff     340 Jun 14 20:30 lib
-rw-r--r--   1 bryan  staff     308 Jun 14 20:30 path.bash.inc
-rw-r--r--   1 bryan  staff    1210 Jun 14 20:30 path.fish.inc
-rw-r--r--   1 bryan  staff      31 Jun 14 20:30 path.zsh.inc
drwxr-xr-x   6 bryan  staff     204 Jun 14 20:30 platform
-rw-r--r--   1 bryan  staff      40 Jun 14 20:30 properties

bryan@Bryans-MacBook 星期四 6 月 15 日 10:24:22 ~/go/src/skincarereview

$ find / -name goroot 2>/dev/null

/Users/bryan/google-cloud-sdk/platform/google_appengine/goroot

bryan@Bryans-MacBook 星期四 6 月 15 日 10:28:43 ~/go/src/skincarereview

$ 回声 $PATH

/Users/bryan/google-cloud-sdk/bin:/Users/bryan/go/src/:/Users/bryan/google-cloud-sdk/platform/google_appengine/goroot/bin/:/Users/bryan/google-cloud-sdk/bin/:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin

查看 main.go 第 155 行,我认为错误被抛出,我看不到“goroot”被设置在哪里。

if fi, err := os.Stat(goroot); err != nil || !fi.IsDir() {
    fmt.Fprintf(os.Stderr, "go: cannot find GOROOT directory: %v\n", goroot)
    os.Exit(2)
}

【问题讨论】:

    标签: google-app-engine go


    【解决方案1】:

    您可以尝试关注recommendation of this answer

    如果您的安装不合理(我曾经发生过一次),只需删除云 SDK 以及您的 $PATH 中对它的任何引用。还要完全卸载常规的 Go 安装。

    然后从头开始。 Install Go, unpack google-cloud-sdk,运行安装程序(如果需要,添加到 $PATH),gcloud components install app-engine-go
    瞧。

    正如同一个答案中提到的,您不会在任何地方设置GOROOTit is set for you

    【讨论】:

    • 我已经在两台不同的计算机上重新安装了。我得到同样的错误。
    • @BryanWheelock 好的。我想我参考的答案的第一部分也没有帮助?
    • 我也删除了 GO 和 PATH。我向谷歌发送了一些东西,问题是 SDK 代码中的一个错误。不知道什么时候更新。
    • @BryanWheelock 好的。你的 bug 的 URL 是什么?
    【解决方案2】:

    您可能想了解 go run/test 的工作原理。该程序基本上构建到一个临时位置然后运行,所以这可能就是它抱怨你的 goroot 的原因。

    这个问题可能对你有帮助:Golang: tests and working directory

    【讨论】:

      【解决方案3】:

      我相信你调用了错误的 goapp。您应该直接在 google_appengine 文件夹中调用一个,如下所示:

      /Users/bryan/google-cloud-sdk/platform/google_appengine/goapp test
      

      如果您出于某种原因在 google_appengine 中没有 goapp,我会感到非常惊讶,但是以下应该也可以工作。 (上面仍然是正确的调用方式。goapp 将 appengine 的 goroot 解析为与其自身位置的相对路径,因此 goapp 本身所在的位置很重要。)

      GOROOT=/Users/bryan/google-cloud-sdk/platform/google_appengine/goroot /Users/bryan/google-cloud-sdk/platform/google_appengine/goapp test
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-30
        • 1970-01-01
        • 2020-12-10
        • 2013-02-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多