【发布时间】:2020-10-02 05:22:26
【问题描述】:
我在 ~/go/src/project-folder 有一个 go 项目,结构如下
.
+--app
+--main.go
+--main (binary)
+--config
+--config.go
+--.env
config 包使用github.com/joho/godotenv 包来加载.env 文件并在main.go 中调用以访问某些数据(例如运行我的网络服务器的端口)。
如果我 cd 进入 app 文件夹并运行 ./main 项目按预期工作,但如果我在我的主目录中运行
~/go/src/project-folder/app/main
我明白了
open /.env: no such file or directoryError
我使用config包中的go包path/filepath来访问.env文件。
这是配置包中读取.env文件的代码
config/config.go
package config
import (
"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
}
app/main.go
package main
import (
"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"
似乎路径是从我调用二进制文件的位置而不是二进制文件所在的位置引用的。
有没有办法确保路径是相对于二进制文件所在的位置而不是它被调用的位置?
【问题讨论】:
-
尝试从根文件夹而不是包含 main.go 的文件夹运行代码
-
@kofoworola 仍然解决了
no such file错误 -
你能把你设置文件夹路径的代码贴出来吗?
-
你的 GOPATH 是什么?
-
@AshwinShirva 我的 GOPATH 是
GOPATH="/home/fanan/go"
标签: go environment-variables environment