目标: 我想使用HTTP触发器重用两个Go函数中的许多Go函数。
我尝试过的方法和重现此问题的步骤:
MyReusableHelloWorld
function.go
package Potatoes import ( "net/http" ) // Potatoes return potatoes func Potatoes(http.ResponseWriter, *http.Request) { }
go.mod
module example.com/foo
Potatoes
// Package p contains an HTTP Cloud Function. package p import ( "encoding/json" "fmt" "html" "net/http" "example.com/foo/Potatoes" ) // HelloWorld prints the JSON encoded "message" field in the body // of the request or "Hello, World!" if there isn't one. func HelloWorld(w http.ResponseWriter, r *http.Request) { var d struct { Message string `json:"message"` } if err := json.NewDecoder(r.Body).Decode(&d); err != nil { fmt.Fprint(w, "error here!") return } if d.Message == "" { fmt.Fprint(w, "oh boy Hello World!") return } fmt.Fprint(w, html.EscapeString(d.Message)) }
HelloWorld
unknown import path "example.com/foo/Potatoes": cannot find module providing package example.com/foo/Potatoes
我还尝试了各种组合来导入模块/软件包。我尝试过没有example.com/部分。
另一个较小的问题: 我想重用的功能可能都在同一个文件中,并且实际上不需要任何触发器,但是似乎没有触发器是不可能的。
我无法实现目标的相关问题和文档:
您不能从另一个调用云功能,因为每个功能都独立地位于其自己的容器中。
因此,如果要使用无法从程序包管理器下载的依赖项来部署功能,则需要像此处一样将代码放在一起,然后使用CLI进行部署