Home > Article > Backend Development > Why does Go Modules throw the "replacement module without version must be directory path (rooted or starting with...)" error?
go modules - "replacement module without version must be directory path (rooted or starting with...") Glitch
In the context of go modules, the replace directive allows you to replace a module with a local path. However, this directive has a specific requirement: the path must be either rooted (starting with "/") or relative to the module's root.
Understanding the Issue
In the scenario provided, an attempt to use a local package (mypack) within a go module (goweb) resulted in the error: "replacement module without version must be directory path (rooted or starting with .)" This error indicates that the path specified for the replace directive does not meet the required format.
Resolving the Issue
To resolve this issue, ensure that the path for the replace directive meets the following conditions:
Solution
In the case of the goweb module, since mypack is a sibling of its root directory, the correct replace directive is:
<code class="go">replace mypack => ../mypack</code>
Additionally, for this replacement to work effectively, mypack must also be converted into a go module by adding a go.mod file to its directory. This can be done by running the command go mod init mypack within the mypack directory.
Other Considerations
If the app and the package it uses are part of the same go module, adding it to go.mod is not necessary. Simply referring to the package within the code will suffice.
Resources
The above is the detailed content of Why does Go Modules throw the "replacement module without version must be directory path (rooted or starting with...)" error?. For more information, please follow other related articles on the PHP Chinese website!