lionsoul2014/ip2region · error

Expand(` `)

Error message

Expand(`%s`): %s

What it means

Go service factory: homedir.Expand failed while resolving a leading ~ in the v4 xdb path (e.g. $HOME unset or malformed path), so the absolute db path could not be derived.

Solutions

  1. Use an absolute path for the v4 xdb file
  2. Ensure HOME is set for the running user when using ~ paths
  3. Validate the expanded path exists before creating the service
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at binding/golang/main.go:50 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of lionsoul2014/ip2region@c1a1fc7d59 (2026-09-02). Data as JSON: /api/errors/e12359a54c446c50. Report an issue: GitHub.

Appendix: source

Thrown at binding/golang/main.go:50

	_, err = os.Stat(xdbPath)
	if err != nil {
		return "", nil
	}

	// fmt.Printf("xdbPath=%s\n", xdbPath)
	return xdbPath, nil
}

func createService(v4XdbPath string, v4CachePolicy string, v6XdbPath string, v6CachePolicy string) (*service.Ip2Region, error) {
	// try to create v4 config
	v4CPolicy, err := service.CachePolicyFromName(v4CachePolicy)
	if err != nil {
		return nil, fmt.Errorf("parse v4 cache policy: %w", err)
	}

	v4DbPath, err := homedir.Expand(v4XdbPath)
	if err != nil {
		return nil, fmt.Errorf("Expand(`%s`): %s", v4XdbPath, err)
	}
	v4Config, err := service.NewV4Config(v4CPolicy, v4DbPath, 1)
	if err != nil {
		return nil, fmt.Errorf("NewV4Config: %w", err)
	}

	// try to create v6 config
	v6Policy, err := service.CachePolicyFromName(v6CachePolicy)
	if err != nil {
		return nil, fmt.Errorf("parse v6 cache policy: %w", err)
	}

	v6DbPath, err := homedir.Expand(v6XdbPath)
	if err != nil {
		return nil, fmt.Errorf("Expand(`%s`): %s", v6XdbPath, err)
	}
	v6Config, err := service.NewV6Config(v6Policy, v6DbPath, 1)
	if err != nil {

View on GitHub (pinned to c1a1fc7d59)