gotosocial/vendor/github.com/spf13/viper/TROUBLESHOOTING.md
tobi 0884f89431
Implement Cobra CLI tooling, Viper config tooling (#336)
* start pulling out + replacing urfave and config

* replace many many instances of config

* move more stuff => viper

* properly remove urfave

* move some flags to root command

* add testrig commands to root

* alias config file keys

* start adding cli parsing tests

* reorder viper init

* remove config path alias

* fmt

* change config file keys to non-nested

* we're more or less in business now

* tidy up the common func

* go fmt

* get tests passing again

* add note about the cliparsing tests

* reorganize

* update docs with changes

* structure cmd dir better

* rename + move some files around

* fix dangling comma
2021-12-07 13:31:39 +01:00

1.4 KiB

Troubleshooting

Unmarshaling doesn't work

The most common reason for this issue is improper use of struct tags (eg. yaml or json). Viper uses github.com/mitchellh/mapstructure under the hood for unmarshaling values which uses mapstructure tags by default. Please refer to the library's documentation for using other struct tags.

Cannot find package

Viper installation seems to fail a lot lately with the following (or a similar) error:

cannot find package "github.com/hashicorp/hcl/tree/hcl1" in any of:
/usr/local/Cellar/go/1.15.7_1/libexec/src/github.com/hashicorp/hcl/tree/hcl1 (from $GOROOT)
/Users/user/go/src/github.com/hashicorp/hcl/tree/hcl1 (from $GOPATH)

As the error message suggests, Go tries to look up dependencies in GOPATH mode (as it's commonly called) from the GOPATH. Viper opted to use Go Modules to manage its dependencies. While in many cases the two methods are interchangeable, once a dependency releases new (major) versions, GOPATH mode is no longer able to decide which version to use, so it'll either use one that's already present or pick a version (usually the master branch).

The solution is easy: switch to using Go Modules. Please refer to the wiki on how to do that.

*tl;dr export GO111MODULE=on