這是我的簡化配置:stripe: secret_key: sk_fromconfig為什么毒蛇不從環境中獲取價值?% echo $STRIPE_SECRET_KEYsk_fromenv% go run main.go sk_fromconfig我希望它從 env 中獲取價值,因為我有這樣一個:% echo $STRIPE_SECRET_KEYsk_fromenv% go run main.go sk_fromenv這是代碼:package mainimport ( "fmt" viper "github.com/spf13/viper")type Config struct { Stripe Stripe}type Stripe struct { SecretKey string `mapstructure:"secret_key"`}func main() { viper.SetConfigName("config") viper.SetConfigType("yaml") viper.AddConfigPath(".") viper.AutomaticEnv() _ = viper.ReadInConfig() var config Config _ = viper.Unmarshal(&config) fmt.Println(config.Stripe.SecretKey)}我試過了viper.BindEnv("STRIPE_SECRET_KEY"),viper.SetEnvPrefix("STRIPE")但沒有用。
1 回答

牛魔王的故事
TA貢獻1830條經驗 獲得超3個贊
使用viper.SetEnvKeyReplacer
,因為它不會自動替換.
為_
viper.SetEnvKeyReplacer(strings.NewReplacer(`.`,`_`))
所以它正在尋找環境變量STRIPE.SECRET_KEY
,但由于大多數 shell 不允許在環境變量名稱中使用點,因此我們必須將其替換為下劃線。
- 1 回答
- 0 關注
- 144 瀏覽
添加回答
舉報
0/150
提交
取消