$ go version 1.13.3
次のようなフォルダ構造があります。
GOPATH
+---src
+--- my-api-server
+--- my-auth-server
+--- main.go
+--- my-utils
+--- uuid
+--- uuid.go
my-auth-server
は、依存関係としてmy-api-server/my-utils/uuid
を使用します
さて、GOPATHベースのモジュールシステムを使用すると、これは正常に機能しました。しかし、goモジュールを使用しているときにgo run main.go
でmy-auth-server
を実行すると、エラーが返されました。
build command-line-arguments: cannot load my-api-server/my-utils/uuid: malformed module path "my-api-server/my-utils/uuid": missing dot in first path element
これを解決する方法はありますか?
_go.mod
_ファイルはプロジェクトのルートにある必要があります(この場合は_my-api-server/go.mod
_)。
モジュールパスの最初の部分はドメイン/パスである必要があります。たとえば、フルパスは_github.com/your-github-username/my-api-server
_のようになります。表示されているエラーは、最初の部分がドメイン(ピリオド)ではないためです。開発するためにモジュールを公開する必要はありませんが、適切なドメイン名を使用する必要があります。
モジュールパスを取得したら、フルモジュールパス+ "/" +パッケージの相対パスを使用して、そのモジュールに含まれるパッケージをインポートできます。例えば、
_import "github.com/your-github-username/my-api-server/my-utils/uuid"
_
_main.go
_とuuid
は同じモジュールに含まれているので、require
を使用するために_go.mod
_ファイルにuuid
ステートメントは必要ありませんパッケージ。他のパッケージと同じようにインポートでき、機能します。
_go build
_を使用するよりも、_go run
_を使用して結果の実行可能ファイルを実行することをお勧めします。これにより、ビルドプロセスに必要なすべてのファイルを含めることができます。
方法についてのシリーズの 2番目の投稿 を含むGoモジュールの使用方法のウォークスルーについては、 https://blog.golang.org/using-go-modules を参照してください。モジュールを使用するようにプロジェクトを変換します。
Main.goファイルのインポートパスを確認します。私の側で機能させるには、インポートパス全体を[プロジェクト名]/viewsではなく「github.com/ [ユーザー名]/[プロジェクト名]/views」と呼ぶ必要がありました。