【问题标题】:Missing symbols when importing `github.com/influxdb/influxdb/client/v2` package导入 `github.com/influxdb/influxdb/client/v2` 包时缺少符号
【发布时间】:2016-01-26 04:54:18
【问题描述】:

在 Golang 中的 google cloud 上设置 web socket,并在我的本地机器上正常工作的导入代码在云上不起作用。

我有:

import "github.com/influxdb/influxdb/client/v2"

并且已经运行了

go get "github.com/influxdb/influxdb/client/v2"

运行 go run server.go 我得到:

# command-line-arguments
./pi_server.go:47: undefined: client.NewClient
./pi_server.go:47: undefined: client.Config

以下完整代码,不包括 const 声明和 html:

package main

import (
    "flag"
    "html/template"
    "log"
    "net/http"
    "github.com/gorilla/websocket"
    "fmt"
    "net/url"
    "github.com/influxdb/influxdb/client/v2"
    "time"
)

var addr = flag.String("addr", "localhost:8080", "http service address")

var upgrader = websocket.Upgrader{} // use default options

func echo(w http.ResponseWriter, r *http.Request) {

    //Influx init
    u,err := url.Parse("http://localhost:8086")
    checkError(err)
    influx_c := client.NewClient(client.Config{
            URL: u,
            Username: username,
            Password: password,
     })
    bp,err := client.NewBatchPoints(client.BatchPointsConfig{
        Database:  MyDB,
        Precision: "s",
    })
    tags := map[string]string{"my_sensor_id": my_sensor_id}
    //end influx init



    c, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        log.Print("upgrade:", err)
        return
    }
    defer c.Close()
    for {
        mt, message, err := c.ReadMessage()
        if err != nil {
            log.Println("read:", err)
            break
        }
        log.Printf("recv: %s", message)

        /*
            write to influx here
        */ 
        fields := map[string]interface{}{
            "random_int":   message,
            "other_stuff":  69696,
        }
        pt,err := client.NewPoint("test_collection", tags, fields, time.Now())
        checkError(err)
        bp.AddPoint(pt)
        influx_c.Write(bp)



        err = c.WriteMessage(mt, message)
        if err != nil {
            log.Println("write:", err)
            break
        }
    }
}

func home(w http.ResponseWriter, r *http.Request) {
    homeTemplate.Execute(w, "ws://"+r.Host+"/echo", )
}

func main() {


    flag.Parse()
    log.SetFlags(0)
    http.HandleFunc("/echo", echo)
    http.HandleFunc("/", home)
    log.Fatal(http.ListenAndServe(*addr, nil))
}

【问题讨论】:

    标签: go package influxdb


    【解决方案1】:

    你的本地机器在this commit之前有一个版本的github.com/influxdb/influxdb/client/v2。您的云服务器正在获取更新版本的软件包。

    要解决此问题,请运行

    go get -u github.com/influxdb/influxdb/client/v2
    

    在您的本地计算机上获取最新版本的软件包。更新应用程序代码以使用新函数和类型名称:

    influx_c := client.NewHTTPClient(client.HTTPConfig{
            URL: u,
            Username: username,
            Password: password,
     })
    

    【讨论】:

      【解决方案2】:

      成功了,谢谢!另请注意以下代码:

      influx_c,err := client.NewHTTPClient(client.HTTPConfig{
          Addr: "http://localhost:8086",
          Username: username,
          Password: password,
      })
      

      他们将 URL 字段更改为 Addr,使用的是字符串文字而不是 net/url 对象

      【讨论】:

        猜你喜欢
        • 2021-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-17
        • 1970-01-01
        • 1970-01-01
        • 2020-01-17
        • 1970-01-01
        相关资源
        最近更新 更多