英文:
Go: Cannot find package in any of Vendor Tree, $GOROOT or $GOPATH even though a private package exists in Vendor Tree
问题
这是我的项目结构:
这是我的模块文件:
module github.com/bloodcompany/blood-microservices/stores/sync-stores-google-sheet-to-firestore
go 1.16
require (
cloud.google.com/go/firestore v1.6.1 // indirect
cloud.google.com/go/kms v1.4.0 // indirect
github.com/bloodcompany/blood-microservices/utils v1.0.0
)
replace (
github.com/bloodcompany/blood-microservices/models => ../../models
github.com/bloodcompany/blood-microservices/utils => ../../utils
)
这是我在 "function.go" 文件中的导入部分:
import (
"github.com/bloodcompany/blood-microservices/utils"
)
问题是:
当我将函数部署到服务器时,在终端中出现以下错误。从项目结构中可以看出,在错误中似乎缺少的包已经在供应商树下可用。但错误仍然出现。可能出了什么问题?
ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Build failed: src/stores/function.go:9:2: cannot find package "github.com/bloodcompany/blood-microservices/utils" in any of:
/workspace/src/stores/vendor/github.com/bloodcompany/blood-microservices/utils (vendor tree)
/layers/google.go.runtime/go/src/github.com/bloodcompany/blood-microservices/utils (from $GOROOT)
/workspace/src/github.com/bloodcompany/blood-microservices/utils (from $GOPATH); Error ID: 2f5e35a0
注意:
我的项目不在 $GOPATH 的位置。这是一个问题吗?$GOPATH 的位置是 "C:\Users\thisa\go",而项目位于另一个位置。
英文:
Here's my project structure:
Here's my mod file:
module github.com/bloodcompany/blood-microservices/stores/sync-stores-google-sheet-to-firestore
go 1.16
require (
cloud.google.com/go/firestore v1.6.1 // indirect
cloud.google.com/go/kms v1.4.0 // indirect
github.com/bloodcompany/blood-microservices/utils v1.0.0
)
replace (
github.com/bloodcompany/blood-microservices/models => ../../models
github.com/bloodcompany/blood-microservices/utils => ../../utils
)
Here is my import in "function.go" file:
import (
"github.com/bloodcompany/blood-microservices/utils"
)
The problem:
When I deploy my function to server, I get below error in the Terminal. You can see in my project structure that the package that seems missing in the error is already available under Vendor Tree. But the error still appears. What could have possibly gone wrong?
ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Build failed: src/stores/function.go:9:2: cannot find package "github.com/bloodcompany/blood-microservices/utils" in any of:
/workspace/src/stores/vendor/github.com/bloodcompany/blood-microservices/utils (vendor tree)
/layers/google.go.runtime/go/src/github.com/bloodcompany/blood-microservices/utils (from $GOROOT)
/workspace/src/github.com/bloodcompany/blood-microservices/utils (from $GOPATH); Error ID: 2f5e35a0
Note:
My project is not in the location of $GOPATH. Is this an issue? $GOPATH location is "C:\Users\thisa\go" while the project is on another location.
答案1
得分: 1
这里有两个可能的问题:
缺少 go.mod 文件
根据文档的说明,你的目标路径需要有一个 go.mod
文件。
> 如果箭头右侧的路径是绝对路径或相对路径(以 ./ 或 ../ 开头),它将被解释为替换模块根目录的本地文件路径,该路径必须包含一个 go.mod 文件。在这种情况下,替换的版本必须被省略。
文件不存在
看起来你引用了项目根目录之外的文件。这些文件是否被下载到部署的位置?如果已经下载,问题可能是上面提到的那个问题。
英文:
There are two possible issues here:
Lack of go.mod
According to the documentation, your destination needs to have a go.mod
file.
> If the path on the right side of the arrow is an absolute or relative path (beginning with ./ or ../), it is interpreted as the local file path to the replacement module root directory, which must contain a go.mod file. The replacement version must be omitted in this case.
The files are not there
It looks like you're referencing files outside of your project root. Are those files being downloaded to wherever they are being deployed to? If they are downloaded, the problem is probably the one above.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论