亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法從 env 獲取嵌套密鑰以使用 viper 覆蓋 yaml 配置文件

無法從 env 獲取嵌套密鑰以使用 viper 覆蓋 yaml 配置文件

Go
慕少森 2022-12-19 11:47:30
這是我的簡化配置: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 不允許在環境變量名稱中使用點,因此我們必須將其替換為下劃線。


查看完整回答
反對 回復 2022-12-19
  • 1 回答
  • 0 關注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號