GOPATHベースのdepからgo modに移行するときに、最初のパス要素に不正なモジュールパス「xxxx / xxxx / uuid」のドットがない


12
$ goバージョン
1.13.3

次のようなフォルダ構造があります。

GOPATH
+---src
     +--- my-api-server
           +--- my-auth-server
                 +--- main.go
           +--- my-utils
                 +--- uuid
                       +--- uuid.go

my-auth-servermy-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

これを解決する方法はありますか?


この回答を参照してください:stackoverflow.com/a/55347424/1218512
colminator

回答:


10

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.gouuid同じモジュールに含まれている、あなたは必要としないrequireでステートメントをgo.mod使用してファイルuuidのパッケージを。他のパッケージと同じようにインポートでき、機能します。

ビルドプロセスに必要なすべてのファイルを確実に含めるためにgo build使用go runするよりも、結果の実行可能ファイルを使用して実行することをお勧めします。

モジュールを使用するためにプロジェクトを変換する方法に関するシリーズの2番目の投稿を含め、Goモジュールの使用方法のチュートリアルについては、https://blog.golang.org/using-go-modulesを参照してください


1

main.goファイルのインポートパスを確認します。私の側で機能させるには、インポートパス全体を[プロジェクト名] / viewsではなく「github.com/ [ユーザー名] / [プロジェクト名] / views」と呼ぶ必要がありました。


-1

GOはモジュールを見つけることができないので!!!

GOPATH内にプロジェクトを置かないでください...とても混乱しています

代わりに...

.bashrcで設定:GO111MODULE = onをエクスポート

すべてのコマンドラインターミナルを閉じてから、ターミナルを再度開きます

プロジェクトのルートフォルダーに移動します

$ go mod init project_module_name

これにより、go.modファイルが生成されます

必要なバージョンでパッケージをインストールします。 go get -v github.com/golang/protobuf@v1.3.4

次に$を実行します go run main.go

これで、go.modファイルに、Golangが実行およびビルドに使用するパッケージバージョンが記録されます...

go.modファイルをチェックして、正しいパッケージバージョンを使用していることを確認してください。github.com/golang/protobuf v1.3.4のようになります。


Do not put your project inside GOPATH... that is so confusing-それは私が特に好む慣習です。
Ayush Gupta

また、エラーはありmissing dot in first path elementませんcannot resolve module
アユシュグプタ

Ayush Gupta、エラーは誤ったモジュールの使用が原因です
Russo

定義しincorrectますか?
Ayush Gupta

正しくないパッケージバージョンのファイルパスが正しくない=> Golangが実行またはビルドする正しいファイルを見つけられない
Russo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.