golang 二进制文件在 gopath src 文件夹之外不工作

标签 go

<分区>

我有一个使用 gin-gonic 定义的 golang 网络应用程序。我在/usr/local/goapp 下定义了 goapp 结构是这样的-
/usr/本地/goapp
+源代码
+bin
+包装
这是我的环境 -
GOPATH -/usr/local
GOBIN -/usr/local/goapp/bin
GOROOT -/usr/local/go

当我在源代码的主文件夹下运行 go build 和 go install 时,我得到了我的二进制文件并且我能够运行它并在我转到主页 URL 时看到我的 html 被加载。 如果我尝试在 bin 文件夹下运行相同的二进制文件,当我转到主页 URL 时,我看不到 html 被加载。我收到 404 页面未找到。

我是不是漏掉了什么?有没有人遇到过这样的问题?

谢谢。

最佳答案

所有这些 GOPATH、GOROOT,当然还有丢失的 PATH 变量只是说明了如何调用 go 程序本身以及它在哪里搜索模块。但是你告诉我们,你构建并安装了一些 go 程序。

当一个 go 程序被构建时,go 实际上不再需要了。您可以将二进制文件放在任何您想要的地方,甚至可以放在另一台具有相同或至少相似系统的机器上,并在那里运行该程序。

当您构建和安装的程序似乎被称为 gin-gonic 时,您将在某个路径中执行它,也称为当前工作目录(请参阅 getcwd(2) 或 pwd(1 )).

我现在只是猜测,在当前工作目录下有您的 htdocs、index.html 以及此 gin-gonic 用来创建页面的任何文件。

很常见的是,如果这样的程序找不到它应该创建、发送、生成等等的文档,它将返回代码 404:未找到。

虽然只是猜测,但这很可能是您所处的情况,当您使用不同的当前工作目录运行程序时,而不是程序期望其文档所在的工作目录。

关于golang 二进制文件在 gopath src 文件夹之外不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31166247/

相关文章:

git - 在 Heroku 上部署 revel 应用程序

git - 如何使用 go get 获取另一个分支而不是默认分支

go - 读取Go命令行程序中管道输入的长度

datetime - Golang - 结构 : time. 时间

go - Paho MQTT Golang 协议(protocol)

arrays - 在 Go slice 或数组中查找唯一项

go - 排序一片整数

go - 使用 Go 后端的 net::ERR_CERT_INVALID

function - 在结构上调用函数的正确习惯用法是什么?

google-app-engine - dev_appserver 使用 goroot 1.6 而不是 1.8