我有一个在Go开发的应用程序。我有一个config.env
文件,并通过使用godotenv
库从中获得一些关键变量。下面是代码:
func InitializeEnvVars() error {
err := godotenv.Load("./config.env")
return err
}
当我在MacOS上使用go build .
构建我的项目并且我想运行应用程序时,应用程序给出了关于读取.env
文件的错误:
2021/03/07 17:42:21 [ERROR]: Error loading .env file
但是当我用go run main.go
命令运行我的应用程序时,一切都很好。
我该如何解决这个问题?
根据注释,godotenv.Load("./config.env")
将尝试从工作目录加载.env
文件。设置工作目录的方法取决于你如何启动应用程序(即命令行/gui)。
如果您希望.env
从保存可执行文件的文件夹中加载,那么请尝试以下操作(注意有一些注意事项):
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)
您可以逐步找到下面的解决方案:
- 创建
cmd
文件夹 - 移动可执行文件到文件夹
- 创建
env
文件,并在代码中命名到这个文件夹 - 打开终端(zsh - MacOS),执行以下命令:
open <executableFileName>
输出文件应该在单独的文件夹中