juicedata/juicefs · error

storj: bucket name is required (set via --bucket)

Error message

storj: bucket name is required (set via --bucket)

What it means

The bucket name derived by stripping the 'storj://' scheme and slashes from the endpoint is empty. Validation guard: Storj operations target a single bucket that must be encoded in the endpoint or set via --bucket; without it the client has nothing to address.

Source

Thrown at pkg/object/storj.go:355

		return iter.Err()
	})
	if err != nil {
		return nil, "", err
	}
	return pending, "", nil
}

func newStorj(endpoint, accessGrant, _, _ string) (ObjectStorage, error) {
	if accessGrant == "" {
		return nil, fmt.Errorf("storj: access grant is required (pass via --access-key)")
	}
	access, err := uplink.ParseAccess(accessGrant)
	if err != nil {
		return nil, fmt.Errorf("storj: parse access grant: %w", err)
	}
	bucket := strings.Trim(strings.TrimPrefix(endpoint, "storj://"), "/")
	if bucket == "" {
		return nil, fmt.Errorf("storj: bucket name is required (set via --bucket)")
	}

	cfg := uplink.Config{UserAgent: UserAgent}

	ctx := context.Background()
	project, err := cfg.OpenProject(ctx, access)
	if err != nil {
		return nil, fmt.Errorf("storj: open project: %w", err)
	}
	return &storjClient{project: project, bucket: bucket}, nil
}

func init() {
	Register("storj", newStorj)
}

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Include the bucket in the endpoint, e.g. storj://mybucket
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at pkg/object/storj.go:355 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of juicedata/juicefs@c9a67b23e8 (2026-09-06). Data as JSON: /api/errors/2bf379b0c9ec8913. Report an issue: GitHub.