前提・実現したいこと
こちらのサイトを参考に、自分のプロジェクトを複数のパッケージに分割したいのですが、うまくいきません。
以下のようなディレクトリ構成で、AWS SAMとlambdaを使ったAPIを開発しようとしています。
├── db │ ├── db.go │ ├── go.mod │ └── go.sum ├── handler │ └── main.go ├── model │ ├── go.mod │ ├── go.sum │ └── model.go ├── go.mod ├── go.sum ├── Makefile ├── README.md └── template.yaml
そして、以下のようにdb
とmodel
をモジュール化して、main.go
ではdb
を使い、db
ではmodel
を使うような、多層の依存関係をローカルパッケージで作ろうと考えています。
- db/go.mod
module db go 1.14 require ( github.com/aws/aws-sdk-go v1.37.15 github.com/pkg/errors v0.9.1 local.packeges/model v0.0.0-00010101000000-000000000000 ) replace local.packeges/model => ../model
- db/db.go
Go
1package db 2 3import ( 4 "os" 5 6 "github.com/aws/aws-sdk-go/aws" 7 "github.com/aws/aws-sdk-go/aws/session" 8 "github.com/aws/aws-sdk-go/service/dynamodb" 9 "github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute" 10 "github.com/pkg/errors" 11 12 "local.packeges/model" 13)
- model/go.mod
module model go 1.14 require github.com/aws/aws-sdk-go v1.37.15
- go.mod
module github.com/{project-name} go 1.14 require ( github.com/aws/aws-lambda-go v1.22.0 github.com/aws/aws-sdk-go v1.37.15 // indirect local.packages/db v0.0.0-00010101000000-000000000000 ) replace ( local.packages/db => ./db )
- handler/main.go
package main import ( "encoding/json" "errors" "fmt" "io/ioutil" "net/http" "net/url" "github.com/aws/aws-lambda-go/events" "github.com/aws/aws-lambda-go/lambda" "local.packages/db" )
しかし、コンパイルしようとすると以下のようなエラーが発生します。
go: local.packages/db@v0.0.0-00010101000000-000000000000 requires local.packeges/model@v0.0.0-00010101000000-000000000000: unrecognized import path "local.packeges/model": https fetch: Get "https://local.packeges/model?go-get=1": dial tcp: lookup local.packeges: no such host
おそらく、db
パッケージのimport "local.packeges/model"
をする際に、replaceで宣言したパスではなく、ネット上のパッケージを探しに行ってしまっているように見えます。
どのようにそれを防げるか教えていただきたいです。
試したこと
ルート直下のgo.mod
に
replace ( local.packages/db => ./db )
を追記してみても結果は変わりませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/23 15:05 編集
2021/02/26 11:32
2021/02/27 16:48