为什么会收到此错误消息?我是使用aws-sam-and-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项目以进行依赖关系管理。首先按照教程中描述的初始化项目的步骤:开始使用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
问题是AWS SAM创建了一个文件夹结构,其中SAM项目的根包含Makefile
,AWS让您在其中构建可执行文件,但应用程序的入口点在子文件夹(即hello-world
文件夹(中。
必须从与main.go
和go.mod
文件相同的位置运行go mod init
和go mod tidy
,而不是从SAM应用程序的根文件夹运行。
因此,对于其他使用go学习SAM的人,请在运行go命令之前尝试更改到包含go文件的子文件夹。
如果您已经有go.mod文件,请运行下面的命令来查找包xxx/xxx 的模块
go mod tidy
外部包中的呼叫代码
对于使用AWS SAM
和vs-code
有此问题的人,如果您的文件夹如下所示:
├── Makefile
├── README.md
├── hello-world
│ ├── go.mod
│ ├── go.sum
│ ├── main.go
│ └── main_test.go
└── template.yaml
尝试将go.mod
和go.sum
移动到根文件夹(打开vs代码的位置(,如下所示:
├── Makefile
├── README.md
├── go.mod
├── go.sum
├── hello-world
│ ├── main.go
│ └── main_test.go
└── template.yaml
可能会迟到,但也会遇到这个问题。
我认为问题更多的是在导入路径上,从文档来看,每个子模块都在../aws-sdk-go/service/<sub-module-name
上。
但正确的应该是:../aws-sdk-go/aws/<sub-module-name
注意aws
而不是service