如何修复 Go 1.11 模块未知导入路径,找不到模块提供包?

Posted

技术标签:

【中文标题】如何修复 Go 1.11 模块未知导入路径,找不到模块提供包?【英文标题】:How to fix Go 1.11 module unknown import path, cannot find module providing package? 【发布时间】:2019-05-21 01:26:50 【问题描述】:

我正在构建一个 Go 1.11 标准应用引擎服务。

它不在GOPATH下面,所以我跑了go mod initgo mod tidy

我能够使用go build 构建一个简单的Web 服务,并使用gcloud app deploy 进行部署和测试。

我现在正尝试在this code example 之后将 gPubSub 代码添加到我的服务中。

这会添加以下导入:"context""cloud.google.com/go/pubsub"

当我运行go build 时,我得到:

../../../../go/pkg/mod/golang.org/x/net@v0.0.0-20181217023233-e147a9138326/idna/idna.go:23:2: unknown import path "golang.org/x/text/secure/bidirule": cannot find module providing package golang.org/x/text/secure/bidirule
../../../../go/pkg/mod/golang.org/x/net@v0.0.0-20181217023233-e147a9138326/idna/idna.go:24:2: unknown import path "golang.org/x/text/unicode/bidi": cannot find module providing package golang.org/x/text/unicode/bidi
../../../../go/pkg/mod/golang.org/x/net@v0.0.0-20181217023233-e147a9138326/idna/idna.go:25:2: unknown import path "golang.org/x/text/unicode/norm": cannot find module providing package golang.org/x/text/unicode/norm

当我运行 go get -u all 时,我得到“没有 Go 文件”

go build golang.org/x/text/secure/bidirule: no Go files in
go build golang.org/x/text/unicode/bidi: no Go files in
go build golang.org/x/text/unicode/norm: no Go files in

cat go.mod 显示以下内容: ```

module github.com/XXX/YYY

require (
    cloud.google.com/go v0.34.0
    github.com/googleapis/gax-go v2.0.2+incompatible // indirect
    go.opencensus.io v0.18.0 // indirect
    golang.org/x/net v0.0.0-20181217023233-e147a9138326 // indirect
    golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890 // indirect
    golang.org/x/sync v0.0.0-20181108010431-42b317875d0f // indirect
    golang.org/x/sys v0.0.0-20181218192612-074acd46bca6 // indirect
    google.golang.org/api v0.0.0-20181220000619-583d854617af // indirect
    google.golang.org/appengine v1.3.0 // indirect
    google.golang.org/genproto v0.0.0-20181219182458-5a97ab628bfb // indirect
    google.golang.org/grpc v1.17.0 // indirect
)

```

go list . 显示以下内容:

go: finding golang.org/x/text/unicode/bidi latest
go: finding golang.org/x/text/secure/bidirule latest
go: finding golang.org/x/text/unicode/norm latest
go: finding golang.org/x/text/unicode latest
go: finding golang.org/x/text/secure latest
github.com/XXX/YYY/ZZZ (our project)

这似乎是一些暂时的依赖。

当我使用 gcloud app deploy 进行部署时,我的服务确实成功构建并在执行时发布到 pubsub 主题,因此这是一个本地问题。

如何诊断和修复这个本地开发环境问题?

【问题讨论】:

呃,你不需要去获取 golang.org/x/package/name 然后 import "package/name" @luminoslty go get golang.org/x/text 是我尝试的第一件事 - 没有效果 这看起来像go get 过去被中断,并在$HOME/go/pkg/mod(模块缓存)中留下了空目录。如果删除 $HOME/go/pkg/mod/golang.org/x/text* 并再次运行 go build 会发生什么? 感谢@Peter - 这似乎解决了我的问题 【参考方案1】:

固定:

rm -rf ~/go/pkg/mod/golang.org/x/text@v0.3.0

go get golang.org/x/text

【讨论】:

非常感谢!这解决了我在firestore../../go/pkg/mod/google.golang.org/grpc@v1.24.0 遇到的问题

以上是关于如何修复 Go 1.11 模块未知导入路径,找不到模块提供包?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复Django添加URL路径中的错误,找不到未链接到新代码

动态导入图像(React Js)(需要 img 路径找不到模块)

如何修复生产中找不到的 vue 动态异步组件?

如何修复“错误:找不到模块'@endb/sqlite'”

如何修复“找不到模块'@angular-devkit/schematics'”

Python找不到自定义的模块