紧急情况:运行时错误:仅在GAE上无效的内存地址或nil指针取消引用

时间:2019-04-23 10:04:48

标签: google-app-engine go gin

我正在使用gin框架开发golang应用程序。基本上,它只是从firestore中以json格式获取数据。

它在本地运行得很好,但是当我将其部署到GAE(gcloud应用程序部署)时,部署过程中没有错误,但是当访问该页面时它不起作用,并且在日志中提供了一个错误:“紧急:运行时错误:无效内存地址或nil指针取消引用”

能帮我解决这个令人沮丧的问题吗?

提前谢谢

这是我的转到页面:

软件包列表集合

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 :(得分:0)

因为没有人知道它发生在哪里?

通过分析您的代码,我唯一能想到的就是 itr变量为空。

您可能需要更改错误部分的检查并添加Panic,而不是仅打印错误并继续运行

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