паника: ошибка времени выполнения: неверный адрес памяти или разыменование нулевого указателя только на GAE - PullRequest
0 голосов
/ 23 апреля 2019

Я работаю над приложением golang с использованием gin framework.В основном это просто выборка данных из firestore как json.

Локально это работает отлично, но при развертывании его в GAE (развертывание приложения gcloud) во время развертывания не возникает ошибки, но при доступе к странице это не работает ив логах выведите ошибку: «паника: ошибка времени выполнения: неверный адрес памяти или разыменование нулевого указателя»

Не могли бы вы помочь мне решить эту неприятную проблему.

Заранее спасибо

Вот моя страница перехода:

список пакетов

import (
    "fmt"
    "log"
    "net/http"

    "cloud.google.com/go/firestore"
    "github.com/gin-gonic/gin"
    "google.golang.org/api/iterator"
    "google.golang.org/appengine"
)

func main() {

}

//GetListCollections function

func GetListCollections(c *gin.Context) {

    var coll []string
    ctx := appengine.NewContext(c.Request)

    projectID := "XXX"
    client, err := firestore.NewClient(ctx, projectID)
    if err != nil {
        log.Fatalf("Failed to create client: %v", err)
    }
    defer client.Close()

    iter := client.Collection("collection").Documents(ctx)

    for {

        doc, err := iter.Next()

        if err == iterator.Done {
            break
        }
        if err != nil {
            fmt.Println("ERROR")
        }

        coll = append(coll, doc.Data()["Title"].(string))

    }

    c.JSON(http.StatusOK, gin.H{
        "collections": coll,
    })

}

1 Ответ

0 голосов
/ 23 апреля 2019

Как никто не знает, где это произошло?

Из анализа вашего кода я могу думать только о том, что ваш itr переменная пуста.

Возможно, вам придется изменить часть проверки на наличие ошибок и добавить панику вместо того, чтобы просто печатать ошибку и продолжать работу

        if err != nil {
            panic("ERROR")
        }
...