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



为什么会收到此错误消息?我是使用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.gogo.mod文件相同的位置运行go mod initgo mod tidy,而不是从SAM应用程序的根文件夹运行。

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

如果您已经有go.mod文件,请运行下面的命令来查找包xxx/xxx 的模块

go mod tidy

外部包中的呼叫代码

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

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

尝试go.modgo.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

相关内容

  • 没有找到相关文章

最新更新