go config_error ai_generated true

panic: failed to parse target "localhost:50051": parse error: scheme is missing

ID: go/grpc-failed-to-parse-address

Also available as: JSON · Markdown · 中文
80%Fix Rate
89%Confidence
0Evidence
2024-09-15First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
google.golang.org/grpc 1.63+ active — — —

Root Cause

grpc.NewClient requires a scheme prefix (e.g., dns:///, passthrough:///) in newer gRPC versions; bare host:port is rejected.

generic

中文

较新版本的 gRPC 中 grpc.NewClient 要求目标带 scheme 前缀(如 dns:///、passthrough:///);裸 host:port 会被拒绝。

Workarounds

  1. 95% success
    Use a valid scheme:
    conn, err := grpc.NewClient("dns:///localhost:50051", grpc.WithTransportCredentials(insecure.NewCredentials()))
    // or for a literal address:
    conn, err := grpc.NewClient("passthrough:///localhost:50051", ...)
  2. 85% success
    Register a custom resolver if you need a non-DNS scheme:
    resolver.Register(&myResolverBuilder{})

Dead Ends

Common approaches that don't work:

  1. 60% fail

    grpc.Dial is deprecated but still works; however it hides the migration and will be removed.

  2. 85% fail

    gRPC does not understand http://; it expects a gRPC resolver scheme.