go-kratos/kratos · error

fileNames invalid

Error message

fileNames invalid

What it means

Returned by Polaris.Config in the polaris contrib facade (contrib/polaris/polaris.go:65). Unlike the standalone config source (which takes one group+file), this facade takes a list of File{Name,Group} structs via WithConfigFile and stores them in options.files; if the slice is empty there is nothing to fetch and Config returns this error. Note the different message ('fileNames', plural) versus the standalone package's singular checks.

Solutions

  1. Pass at least one polaris.File via polaris.WithConfigFile, e.g. p.Config(polaris.WithConfigFile(polaris.File{Name: "config.yaml", Group: "myapp"}))
  2. If you only need single-file config, prefer the standalone contrib/config/polaris package with WithFileGroup/WithFileName

Example fix

// before
src, err := p.Config() // p := polaris.New(sdkCtx)
// err = fileNames invalid

// after
src, err := p.Config(
    polaris.WithConfigFile(
        polaris.File{Name: "config.yaml", Group: "myapp"},
        polaris.File{Name: "feature.yaml", Group: "myapp"},
    ),
)
Defensive patterns

Strategy: validation

Validate before calling

files := []polaris.File{{Name: "config.yaml", Group: "myapp"}}
if len(files) == 0 {
    return fmt.Errorf("polaris.Config requires at least one WithConfigFile entry")
}
src, err := p.Config(polaris.WithConfigFile(files...))

Prevention

When it happens

Trigger: Calling p.Config() with no options on a Polaris value built by polaris.New(sdkCtx); or passing a variadic WithConfigFile() with zero arguments, which still leaves files empty. Every valid call is p.Config(polaris.WithConfigFile(polaris.File{Name: "config.yaml", Group: "myapp"}, ...)).

Common situations: Using the Polaris facade for registry/ratelimit and assuming Config() needs no arguments; passing WithConfigFile(nil) or an empty slice variable; option named similarly to the standalone package's WithFileName being used here by mistake (it does not exist on the facade).

Related errors


AI-assisted analysis of go-kratos/kratos@668db92c2c (2026-08-16). Data as JSON: /api/errors/94c2faba48c405f6. Report an issue: GitHub.

Appendix: source

Thrown at contrib/polaris/polaris.go:65

		namespace: "default",
	}
	for _, option := range opts {
		option(&op)
	}
	return op
}

func (p *Polaris) Config(opts ...ConfigOption) (config.Source, error) {
	options := &configOptions{
		namespace: p.namespace,
	}

	for _, opt := range opts {
		opt(options)
	}

	if len(options.files) == 0 {
		return nil, errors.New("fileNames invalid")
	}

	return &source{
		client:  p.config,
		options: options,
	}, nil
}

func (p *Polaris) Registry(opts ...RegistryOption) (r *Registry) {
	op := registryOptions{
		Namespace: p.namespace,
		Healthy:   true,
	}
	for _, option := range opts {
		option(&op)
	}
	return &Registry{
		opt:      op,

View on GitHub (pinned to 668db92c2c)