Я пытаюсь запустить пример кода, который хранит некоторые случайные данные, используя облачную функцию на сервере Firestore, однако команда облачных функций deploy отказывается создавать команду:
// Package p contains an HTTP Cloud Function.
package p
import (
//...
firebase "firebase.google.com/go"
"log"
"net/http"
"os"
)
// Store1 Stores data on FireBase
func Store1(w http.ResponseWriter, r *http.Request) {
// Use the application default credentials
ctx := context.Background()
conf := &firebase.Config{ProjectID: "firefirefire"}
app, err := firebase.NewApp(ctx, conf)
if err != nil {
log.Fatalln(err)
}
client, err := app.Firestore(ctx)
if err != nil {
log.Fatalln(err)
}
defer client.Close()
_, _, err = client.Collection("users").Add(ctx, map[string]interface{}{
"first": "Ada",
"last": "Lovelace",
"born": 1815,
})
if err != nil {
log.Fatalf("Failed adding alovelace: %v", err)
}
fmt.Println("ENV:" + os.Getenv("VAR1"))
fmt.Fprint(w, html.EscapeString(d.Message))
}
Вот что я получаю как ошибку:
localhost:store1 b$ ./deploy.sh
Updated property [functions/region].
Deploying function (may take a while - up to 2 minutes)...failed.
ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Build failed: /tmp/sgb/gopath/src/serverlessapp/vendor/p/store1.go:6:2: cannot find package "firebase.google.com/go" in any of:
/tmp/sgb/gopath/src/serverlessapp/vendor/firebase.google.com/go (vendor tree)
/go/src/firebase.google.com/go (from $GOROOT)
/tmp/sgb/gopath/src/firebase.google.com/go (from $GOPATH)
Как видите, проблема в том, что у Google нет firebase.google.com/go на движке облачных функций, и в результате я не могу заставить мою безсерверную конфигурацию выполнять работу с firebase.
Должен ли я перейти на CloudSQL и заплатить 11 долларов?
Должен ли я продолжать пытаться заставить Firebase работать?
Должен ли я попробовать функцию Firebase вместо этого?
Пожалуйста, сообщите.