没有必需的模块提供包 github.com/aws/aws-sdk-go/aws

no required module provides package github.com/aws/aws-sdk-go/aws

为什么我会收到此错误消息?我是使用 aws sam 和 Go 的初学者。

Error: GoModulesBuilder:Build - Builder Failed: main.go:9:2: no required module provides package github.com/aws/aws-sdk-go/aws; to add it:
go get github.com/aws/aws-sdk-go/aws
main.go:10:2: no required module provides package github.com/aws/aws-sdk-go/aws/session; to add it:
go get github.com/aws/aws-sdk-go/aws/session
main.go:11:2: no required module provides package github.com/aws/aws-sdk-go/service/dynamodb; to add it:<br>
go get github.com/aws/aws-sdk-go/service/dynamodb

这是我在 vscode 中的代码 主包

import (
    "logs"

    "github.com/aws/aws-lambda-go/events"
    "github.com/aws/aws-lambda-go/lambda"

    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/dynamodb"
)

您需要正确设置您的 Go 项目以进行依赖管理。首先按照 Tutorial: Get started with Go:

中描述的初始化项目的步骤
go mod init YOUR_PROJECT_NAME

然后添加你的依赖:

go get github.com/aws/aws-sdk-go/aws
go get github.com/aws/aws-sdk-go/service/dynamodb

如果您已经有 go.mod 文件 运行 下面的命令可以找到软件包 xxx/xxx

的模块
go mod tidy

Call code in an external package

问题是 AWS SAM 创建了一个文件夹结构,其中 SAM 项目的根目录包含 Makefile AWS 让您在其中构建可执行文件,但应用程序的入口点位于子文件夹中(即 hello-world 文件夹)。

您必须 运行 go mod initgo mod tidy 来自与 main.gogo.mod 文件相同的位置,而不是来自 SAM 的根文件夹申请。

因此,对于使用 go 学习 SAM 的任何其他人,请尝试在 运行 go 命令之前更改到包含您的 go 文件的子文件夹。

对于使用 AWS SAMvs-code 遇到此问题的人,如果您的文件夹如下所示

├── Makefile
├── README.md
├── hello-world
│   ├── go.mod
│   ├── go.sum
│   ├── main.go
│   └── main_test.go
└── template.yaml

尝试将移动 go.modgo.sum 到根文件夹(打开 vs-code 的位置),如下所示:

├── Makefile
├── README.md
├── go.mod
├── go.sum
├── hello-world
│   ├── main.go
│   └── main_test.go
└── template.yaml