一尘不染

在文件之间使用环境变量-GOPATH

go

这是我第一次在Go中进行编码,而无需使用GOPATH。
我有一个go.mod档案。
我正在尝试通过Sendgrid发送电子邮件;我有一个包含我的SENDGRID_API_KEY的文件sendgrid.env
当尝试在我的main.go文件中使用密钥时,该值并未被提取。

fmt.Println(os.LookupEnv("SENDGRID_API_KEY")) // empty string 
fmt.Println(os.Getenv("SENDGRID_API_KEY")) // empty string

我也使用了’LookupEnv’,它返回false。
任何帮助,将不胜感激。


阅读 305

收藏
2020-07-02

共1个答案

一尘不染

os.Getenv()并且os.LookupEnv()不检查文件。如果您的环境变量在文件中,则必须自己加载它们。或者使用为您执行此操作的第三方库,例如github.com/joho/godotenv,它看起来像这样:

if err := godotenv.Load("sendgrid.env"); err != nil {
    log.Fatal("Error loading sendgrid.env file")
}

另一个选择是在启动您的应用程序之前导出环境变量,例如:

export SENDGRID_API_KEY=mykey
./mygoapp

或一行:

SENDGRID_API_KEY=mykey ./mygoapp

或者,如果文件中包含env var,则可以使用以下source命令:

source sendgrid.env
./mygoapp
2020-07-02