2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Golang 備忘録】VSCodeで"BrokenImport"が出たときに読んでほしい記事

Posted at

導入

こんにちは。
Golangを学び始めて1ヶ月が経ち、ついにVSCodeでAPIサーバーを作ってみました。そこで、BrokenImportにとても苦しまされたのでその解決策を備忘録という形で残すことにしました。
初投稿であり、読みにくいと感じられる点もあるかと思いますが、参考になれば幸いです。

問題

私のAPIサーバーのディレクトリは下のようになっていました。(一部略)
api
├ cmd/
│ └ go.sum
│ └ go.mod
│ └ main.go
├ internal
│ ├ domain
│ │ └ user.go
│ │ └ works.go
│ ├ router
│ │ └ router.go
:
go.mod
└ go.sum
私は、internalフォルダ内にある、domainやrouterをcmdフォルダ内で呼び出そうとした際にBrokenImportが表示され、エラーを吐きました。
考えられる問題点として、赤字で示したようにプロジェクトディレクトリ下に複数のgo.modが存在していることが挙げられます。

解決策

それぞれのgo.modが存在するディレクトリが各々workspaceであることを示すためにgo.workを作成します。
私の場合、ターミナル内で以下のように実行しました。
go work init ./cmd ./internal

すると、以下のファイルがプロジェクトディレクトリに作られます。

go.work
go 1.22.4

use (
	./cmd
	./internal
)

work.goを作成した後は、main.goでinternalフォルダ内のものをcmdフォルダ内でうまく呼び出すことができました。

以上で終わりです。最後まで読んでくださり、ありがとうございました。

参考記事

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?