Нарушенные зависимости для кодирования pkg. Код не работает изо дня в день. Неудачное обновление? (ПРАВКА: Нет! неудачный пользователь. Пожалуйста, посмотрите мой ответ)

# #go

Вопрос:

Я новичок в Golang и разрабатываю программу очистки веб-страниц. Прошлой ночью я запускал свои программы, и все было в порядке. Мои программы запускались как из исходного кода, используя «go run xyz.go», так и встроенную версию ($ ./xyz.exe)

Этим утром я проснулся с очевидной проблемой сломанной зависимости, которую мне не удалось выяснить. Встроенная программа (./xyz.exe) со вчерашнего вечера все еще работает, но когда я пытаюсь запустить исходный код сегодня, используя «go run xyz.go», я получаю следующий результат:

«$ иди, запускай xyz.иди

иди строй golang.org/x/text/encoding: нет файлов, не являющихся тестовыми, в C:UsersadminDropboxgoworkpkgmodgolang.orgxtext@v0.3.7encoding

иди строй golang.org/x/text/transform: нет файлов, не являющихся тестовыми, в C:UsersadminDropboxgoworkpkgmodgolang.orgxtext@v0.3.7transform

golang.org/x/net/html/atom

……..pkgmodgolang.orgxnet@v0.0.0-20210916014120-12bc252f5db8htmlatomatom.go:27:26: неопределенные: atomText ……..pkgmodgolang.orgxnet@v0.0.0-20210916014120-12bc252f5db8htmlatomatom.go:30:9: неопределенные: atomText ……..pkgmodgolang.orgxnet@v0.0.0-20210916014120-12bc252f5db8htmlatomatom.go:34:9: неопределенные: atomText ……..pkgmodgolang.orgxnet@v0.0.0-20210916014120-12bc252f5db8htmlatomatom.go:58:29: неопределенные: maxAtomLen ……..pkgmodgolang.orgxnet@v0.0.0-20210916014120-12bc252f5db8htmlatomatom.go:61:11: неопределенные: hash0 ……..pkgmodgolang.orgxnet@v0.0.0-20210916014120-12bc252f5db8htmlatomatom.go:62:10: не определено: таблица ……….. pkgmodgolang.orgxnet@v0.0.0-20210916014120-12bc252f5db8htmlatomatom.go:65:10: не определено: таблица

github.com/andybalholm/cascadia

……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:10:9: неопределенные: tagSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:14:9: неопределенные: idSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:18:9: неопределенные: classSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:22:9: неопределенные: attrSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:32:9: неопределенные: relativePseudoClassSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:35:9: неопределенные: containsPseudoClassSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:42:9: неопределенные: regexpPseudoClassSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:49:9: неопределенные: nthPseudoClassSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:75:9: неопределенные: onlyChildPseudoClassSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:81:9: неопределенные: inputPseudoClassSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:81:9: слишком много ошибок

golang.org/x/text/internal/language

……..pkgmodgolang.orgxtext@v0.3.7internallanguagecompact.go:12:23: неопределенные: бирка ……..pkgmodgolang.orgxtext@v0.3.7internallanguagecompact.go:23:32: неопределенные: бирка ……..pkgmodgolang.orgxtext@v0.3.7internallanguagecompose.go:15:6: неопределенные: бирка ……..pkgmodgolang.orgxtext@v0.3.7internallanguagecompose.go:23:26: неопределенные: бирка ……..pkgmodgolang.orgxtext@v0.3.7internallanguagecompose.go:56:28: неопределенные: бирка ……..pkgmodgolang.orgxtext@v0.3.7internallanguagecoverage.go:9:24: неопределенная язык ……..pkgmodgolang.orgxtext@v0.3.7internallanguagematch.go:17:10: не определено: Тег ……… pkgmodgolang.orgxtext@v0.3.7internallanguagematch.go:17:35: не определено: Язык ………. pkgmodgolang.orgxtext@v0.3.7internallanguagematch.go:23:10: не определено: Тег ……. pkgmodgolang.orgxtext@v0.3.7internallanguagematch.go:23:37: не определено: Сценарий …….. pkgmodgolang.orgxtext@v0.3.7internallanguagematch.go:23:37: слишком много ошибок»

Я попытался решить эту проблему, обновившись до последней версии Golang. Не уверен, что от этого стало только хуже.

Я использую пакет encoding/csv. Моя IDE-это визуальный код Sudio. Вот мой код:

 package main

import (
    "encoding/csv" // Problem seems to be with this package
    "fmt"
    "log"
    "net"
    "net/http"
    "os"
    "strings"
    "time"

    "github.com/gocolly/colly"
)

func main() {

    fName := "FOOT-live-data.csv"
    file, err := os.OpenFile(fName, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
    if err != nil {
        log.Fatalf("No se pudo crear archivo, error: %q", err)
        return
    }
    defer file.Close()

    writer := csv.NewWriter(file) // Package encoding/csv is used here
    defer writer.Flush()
    
    liga := ""
    start := time.Now()
    cons := 0
    eventodds := make([]string, 3, 5)
    var data [][]string

    c := colly.NewCollector()
    
    c.OnHTML(`div#USInplay-tab-FOOT div.table-row.row-wrap`, func(e *colly.HTMLElement) {

        if e.DOM.Children().Length() == 1 {
            if liga != e.ChildText(`div.ev-type-header`) {
                liga = e.ChildText(`div.ev-type-header`)
            }
        } else {
            cons = cons   1
            timestamp := time.Now().Round(time.Second)
            eventid := e.Attr("data-mkt_id")
            eventinfo := strings.Split(e.ChildText(`div[class="team-score"]`), "n")
            eventtime := e.ChildText(`span.clock_mode_forward`)
            eventperiod := e.ChildText(`span.period`)

            e.ForEach(`div.inplay td.seln`, func(i int, elem *colly.HTMLElement) {
                eventodds[i] = elem.ChildText(`span.dec`)
            })

            data = append(data, []string{
                timestamp.Format(time.RubyDate),
                "WPlay",
                liga,
                eventid,
                eventinfo[1]   " - "   eventinfo[4],
                eventinfo[0]   "-"   eventinfo[3],
                eventtime,
                eventperiod,
                eventodds[0],
                eventodds[1],
                eventodds[2],
            })

        }

    })

    c.Visit("https://apuestas.wplay.co/es")

    writer.WriteAll(data)

    log.Printf("Scraping finished, check file %q for resultsn", fName)

    secs := time.Since(start).Seconds()
    fmt.Printf("Tiempo total: %v segs", secs)
}
 

Комментарии:

1. Не используй go run — используй go build

2. Спасибо. Проблема была не в этом. Проблема заключалась в моем неуклюжем и необразованном использовании Github. Пожалуйста, ознакомьтесь с моим собственным ответом ниже.

Ответ №1:

Мне удалось разобраться в этой странной ситуации! Я раздумывал, удалить ли мой глупый вопрос или ответить на него самому, чтобы помочь кому-то другому в подобной ситуации. Я решил укусить публику за насмешку и ответить на нее сам.

Проблема действительно была связана с нарушенной зависимостью, но не с пакетом кодирования. Основная причина проблемы-мое неуклюжее использование Github.

Я работаю в основном на этом компьютере, и я создал представителя Github, чтобы сохранить свою работу и воспроизвести ее еще на двух компьютерах, одном ноутбуке для дороги и старом Mac.

Действительно, пару недель назад я был в командировке и однажды вечером работал над своим проектом. У меня возникли проблемы с пакетом Colly на ЭТОМ компьютере, поэтому я удалил его из папок src и pkg, которые синхронизированы с представителем Github. Затем механически и «без нейронов» я синхронизировал свою работу с Github, как я всегда делаю в конце своего путешествия.

Вернувшись к своему обычному компьютеру, я выполнил еще кое-какую работу и синхронизировался со своим представителем Guthub. Когда я получил предупреждение о том, чтобы не «подталкивать» мою работу перед «вытаскиванием» или игнорированием последней версии от представителя Github, я не задумывался об этом, прежде чем «вытащить» сначала из представителя.

Бум! Удаленная папка Colly с моего ноутбука на дороге попала в эту машину через Github. Это привело к беспорядку в моей папке Colly на этой машине, которую я все еще пытаюсь распутать.

Я также понял, что нет смысла синхронизировать папки bin, pkg и src с Github, поскольку только последняя содержит нужный вам код, а две другие заполняются локально, если содержимое не существует; они специфичны для машины и архитектуры, над которой вы работаете. Что, я теперь почти уверен, в первую очередь создало проблему на моем ноутбуке.

Это подтверждает поговорку о том, что вы больше учитесь на своих ошибках, чем на своих успехах!

Еще раз приношу свои извинения за то, что опубликовал вопрос, не исчерпав все до последнего ресурса. Я надеюсь, что заключение этого будет полезным.