我有一个 ~/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 二进制文件中找到源文件夹。)
- 1 回答
- 0 关注
- 154 浏览
添加回答
举报
0/150
提交
取消