这是我的简化配置: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 关注
- 159 浏览
添加回答
举报
0/150
	提交
		取消
	