首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >戈朗破碎进口

戈朗破碎进口
EN

Stack Overflow用户
提问于 2022-10-04 11:07:14
回答 2查看 258关注 0票数 1

在尝试导入这个包时,我遇到了一个错误:

代码语言:javascript
复制
"github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway"
"github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2"
"google.golang.org/grpc/cmd/protoc-gen-go-grpc"
"google.golang.org/protobuf/cmd/protoc-gen-go"

这些错误表明:

无法导入github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway (不需要模块提供包"github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway") )

错误是相同的,不需要模块提供包

这是我的围棋:

代码语言:javascript
复制
GO111MODULE="on"

GOARCH="amd64"

GOBIN="/usr/local/go/bin"

GOCACHE="/home/servumtopia/.cache/go-build"

GOENV="/home/servumtopia/.config/go/env"

GOEXE=""

GOEXPERIMENT=""

GOFLAGS

GOHOSTARCH="amd64"

GOHOSTOS="linux"

GOINSECURE=""

GOMODCACHE="/home/servumtopia/go/pkg/mod"

GONOPROXY=""

GONOSUMDB=""

GOOS="linux"

GOPATH="/home/servumtopia/go"

GOPRIVATE=""

GOPROXY="https://proxy.golang.org,direct"

GOROOT="/usr/local/go"

GOSUMDB="sum.golang.org"

GOTMPDIR=""

GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"

GOVCS=""

GOVERSION="go1.19"

GCCGO="gccgo"

GOAMD64="v1"

AR="ar"

CC="gcc"

CXX="g++"

CGO_ENABLED="1"

GOMOD="/home/servumtopia/CODE/GO/sqlc/go.mod"

GOWORK=""

CGO_CFLAGS="-g -O2"

CGO_CPPFLAGS=""

CGO_CXXFLAGS="-g -O2"

CGO_FFLAGS="-g -O2"

CGO_LDFLAGS="-g -O2"

PKG_CONFIG="pkg-config"

GOGCCFLAGS="-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build2576989244=/tmp/go-build -gno-record-gcc-switches"

守则:

代码语言:javascript
复制
//go:build tools
// +build tools

package tools

import (
    _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway"
    _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2"
    _ "google.golang.org/grpc/cmd/protoc-gen-go-grpc"
    _ "google.golang.org/protobuf/cmd/protoc-gen-go"
)

档案结构:

代码语言:javascript
复制
├── api
├── db
│   ├── migration
│   ├── mock
│   ├── queries
│   └── sqlc
├── gapi
├── pb
├── proto
│   └── google
│       └── api
├── token
├── tools
└── util

解释:

go.mod文件正在添加导入的包

代码语言:javascript
复制
github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.2.0
google.golang.org/protobuf v1.28.1

我尝试导入main.go文件中的包,在运行代码时得到了这个错误。

代码语言:javascript
复制
main.go:23:2: import "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway" is a program, not an importable package
main.go:24:2: import "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2" is a program, not an importable package
main.go:25:2: import "google.golang.org/grpc/cmd/protoc-gen-go-grpc" is a program, not an importable package
main.go:26:2: import "google.golang.org/protobuf/cmd/protoc-gen-go" is a program, not an importable package
EN

回答 2

Stack Overflow用户

发布于 2022-10-04 15:27:51

您要导入的包是一个main包。您不能导入main包,因为它们应该被编译成程序(而且您需要自己的main包)。

如果您检查源代码,您会发现这个包只有一个main.go文件,您甚至无法在其中使用该文件(它只有两个非导出函数)。

其他的软件包也是如此。

我能找到的最好的是关于如何创建main.go文件的正式文档:主要.去/ --我还没有彻底阅读过它,很难。

票数 2
EN

Stack Overflow用户

发布于 2022-10-04 11:20:50

你初始化go模块了吗?如果你还没试过这些步骤。

1.创建一个模块

代码语言:javascript
复制
go mod init github.com/youraccount/yourpackge

2.创建main.go

你已经有你的代码了

2.从项目根运行go mod tidy

代码语言:javascript
复制
go mod tidy

这应该能解决你的进口问题。

您也可以单独使用go get。从项目根( go.mod所在的位置)运行这些命令。

代码语言:javascript
复制
go get google.golang.org/protobuf/cmd/protoc-gen-go
go get github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway
go get google.golang.org/grpc/cmd/protoc-gen-go-grpc
go get github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73946975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档