为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 项目中访问静态文件

在 Go 项目中访问静态文件

Go
当年话下 2022-06-13 10:17:10
我有一个 ~/go/src/project-folder具有以下结构的项目.+--app   +--main.go   +--main (binary)+--config   +--config.go+--.envconfig 包使用该github.com/joho/godotenv包来加载.env文件并被调用main.go以访问某些数据(例如运行我的网络服务器的端口)。如果我cd进入app文件夹并运行./main项目按预期工作,但如果我在说我的主目录并运行~/go/src/project-folder/app/main我明白了open /.env: no such file or directoryError我使用包path/filepath中的go包config来访问.env文件。这是读取.env文件 config/config.go的配置包中的代码package configimport (    "github.com/joho/godotenv"    "fmt"    "path/filepath")var env map[string]string func init() {    envPath,_:= filepath.Abs("../.env");    en, err := godotenv.Read(envPath)    if err != nil {        fmt.Print(err)    }    env = en}func ENV() map[string]string {    return env}应用程序/main.gopackage mainimport (    "fmt"    "net/http"    "project/routes"    "project/config"    "project/models")func main() {    router := routes.MakeRouter()    defer models.DB().Close()    err := http.ListenAndServe(":" + config.ENV()["PORT"], router)    if err != nil {        fmt.Print(err)    }}GOPATH GOPATH="/home/fanan/go"似乎路径是从我调用二进制文件的位置而不是二进制文件所在的位置引用的。有没有办法确保路径是相对于二进制文件所在的位置而不是它被调用的位置?
查看完整描述

1 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

似乎路径是从我调用二进制文件的位置而不是二进制文件所在的位置引用的。

当然是。这就是计算机和文件路径的工作方式。

将命令行标志或环境变量添加到您的程序中,以便您设置静态文件的路径。(请注意,绝对不可能在 Go 二进制文件中找到源文件夹。)


查看完整回答
反对 回复 2022-06-13
  • 1 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信