如何通过 runnnig Go 应用程序读取 env 文件?

时间:2021-03-07 16:41:17

标签: go

我有一个用 Go 开发的应用程序。我有一个 Document document = Jsoup.connect("https://www.verbix.com/webverbix/Swedish/misslyckas").get(); Elements divs = document.select("div"); if (!divs.isEmpty()) { for (Element div : divs) { // all of these are empty Elements verbTenses = div.getElementsByClass("verbtense"); Elements verbTables = div.getElementsByClass("verbtable"); Elements tables = div.getElementsByClass("table verbtable"); } } 文件,并使用 config.env 库从中获取一些关键变量。代码如下:

godotenv

当我在 MacOS 上使用 func InitializeEnvVars() error { err := godotenv.Load("./config.env") return err } 构建我的项目并且我想运行该应用程序时,该应用程序在读取 go build . 文件时出现错误:

.env

但是当我使用 2021/03/07 17:42:21 [ERROR]: Error loading .env file 命令运行我的应用时,一切正常。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

根据注释,godotenv.Load("./config.env") 将尝试从工作目录加载 .env 文件。用于设置工作目录的方法取决于您启动应用程序的方式(即命令行/gui)。

如果您希望从包含可执行文件的文件夹中加载 .env,请尝试以下操作(注意有一些 caveats)。

ex, err := os.Executable()
if err != nil {
    panic(fmt.Sprintf("Failed to get executable path: %s", err))
}
envPath := filepath.Join(filepath.Dir(ex), ".env")
err = godotenv.Load(envPath)

答案 1 :(得分:0)

您可以在下面逐步找到解决方案:

  • 创建一个文件夹,如 cmd
  • 移动可执行文件到文件夹
  • 在此文件夹中创建env 文件,并写入代码中的名称
  • 打开终端 (zsh - MacOS) 并运行以下命令:open <executableFileName>

输出文件应该在单独的文件夹中。

相关问题