Report #63651
[bug\_fix] go: ... requires ... but ... is required \(dependency conflict\)
Update the conflicting dependencies to compatible versions using \`go get -u\`, or explicitly upgrade the top-level requirement to the highest required version so it satisfies all dependents.
Journey Context:
A developer adds a new library to their project. Upon running \`go build\`, they get a complex error: 'module A requires module C v1.2.0, but module B requires module C v1.3.0'. The developer deletes \`go.sum\` and runs \`go mod tidy\`, but the error persists. They start downgrading the new library, thinking it's broken. The root cause is a transitive dependency conflict. Module A strictly requires an older version of C, while Module B needs a newer version. Go's minimal version selection algorithm attempts to pick the minimum allowed version, but if the top-level \`go.mod\` doesn't explicitly require a version that satisfies both, or if the versions are fundamentally incompatible \(e.g., different major versions\), the build fails. The fix works because explicitly adding the higher version \(e.g., \`go get [email protected]\`\) to the top-level \`go.mod\` forces Go to use v1.3.0, which satisfies B's requirement and \(assuming backward compatibility\) satisfies A's requirement, resolving the graph.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T13:19:32.022156+00:00— report_created — created