问题
This is my first time coding in Go without using GOPATH.
I have a go.mod
file.
I'm attempting to send an email through Sendgrid; I have a file which contains my SENDGRID_API_KEY called sendgrid.env
.
When trying to use the key within my main.go
file, the value isn't being pulled through.
fmt.Println(os.LookupEnv("SENDGRID_API_KEY")) // empty string
fmt.Println(os.Getenv("SENDGRID_API_KEY")) // empty string
I've also used 'LookupEnv' which returns false.
Any help would be appreciated.
回答1:
os.Getenv() and os.LookupEnv() do not check files. If your env vars are in files, you have to load them yourself. Or use a 3rd party lib that does that for you, e.g. github.com/joho/godotenv, which would look like this:
if err := godotenv.Load("sendgrid.env"); err != nil {
log.Fatal("Error loading sendgrid.env file")
}
Another option is to export the env vars before launching your app, e.g.:
export SENDGRID_API_KEY=mykey
./mygoapp
Or in one line:
SENDGRID_API_KEY=mykey ./mygoapp
Or if you have the env vars in a file, you may use the source
command:
source sendgrid.env
./mygoapp
来源:https://stackoverflow.com/questions/59411316/using-environment-variables-across-files-gopath