Go version

go version go1.23.1 darwin/arm64

Output of go env -changed in your module/workspace


GOPROXY='http://127.0.0.1'

What did you do?

https://pkg.go.dev/cmd/go#hdr-Download_modules_to_local_cache says:

The -json flag causes download to print a sequence of JSON objects to standard output, describing each downloaded module (or failure), corresponding to this Go struct: type Module struct { ... }

It seems that doesn't always happen for some networking errors observed in the Go build system (build 8736907273916323825 being one example). Consider a minimal set of steps which seems to reproduce the problem:

$ export GOPROXY=http://127.0.0.1  # simulate an error downloading modules
$ cd $(mktemp -d)
$ printf 'module test\nrequire example.com v0.0.0\n' > go.mod
$ go mod download -json

What did you see happen?

No JSON is printed to stdout:

$ go mod download -json 2>/dev/null
$

What did you expect to see?

JSON is printed to stdout, describing the error:

$ go mod download -json 2>/dev/null
{
    "Path": "example.com",
    "Version": "v0.0.0",
    "Error": "Get \"http://127.0.0.1/example.com/@v/v0.0.0.mod\": dial tcp 127.0.0.1:80: connect: connection refused"
}
$

CC @matloob, @samthanawalla.

Comment From: gabyhelp

Related Issues and Documentation

(Emoji vote if this was helpful or unhelpful; more detailed feedback welcome in this discussion.)