Go импорт локального модуля не может быть решен с помощью IDE linter - PullRequest
0 голосов
/ 26 марта 2020

Код компилируется нормально, но при использовании директивы replace для сопоставления имени пакета с локальным каталогом, линтер Go не может подобрать это.

Я пробовал это на обоих VSCode и Голанд, оба имеют ошибку линта, как показано ниже. Изображение является дополнительной информацией, все коды и сообщения об ошибках показаны ниже в текстовом формате.

enter image description here

Репозиторий: https://github.com/webberwang/go-lint-error

Это структура папок:

/core
  /calc
    math.go
  go.mod
/main
  app.go
  go.mod
// main/app.go

package main

import (
    "fmt"
    "github.com/codelabstudios/core/calc" <- ERROR "Cannot resolve directory 'core'"
)

func main() {
    result := calc.Add(1, 2) <- ERROR "Unresolved reference 'Add'"
    fmt.Println("calc.Add(1, 2) => ", result)
}
// main/go.mod

module github.com/codelabstudios/main

go 1.14

require github.com/codelabstudios/core v0.0.0-00010101000000-000000000000

replace github.com/codelabstudios/core => ../core
// core/calc/math.go

package main

import (
    "fmt"
    "github.com/codelabstudios/core/calc"
)

func main() {
    result := calc.Add(1, 2)
    fmt.Println("calc.Add(1, 2) => ", result)
}
// core/calc/go.mod

module github.com/codelabstudios/core

go 1.14

1 Ответ

0 голосов
/ 26 марта 2020

После некоторого копания я обнаружил, что директива «заменить» является частью предложения V go (V обозначает версионирование). Это было объединено с Go в 1.11.

Чтобы исправить ошибку импорта локального модуля, нам просто нужно включить "V go Integration" в IDE.

Это допустимо вопрос, какое решение. Но один и тот же человек уже дважды пытался закрыть этот вопрос! Не знаю почему, но если вы столкнулись с этой же проблемой, у вас есть решение сейчас:)

enter image description here

...