Go импорт локальной упаковки - PullRequest
0 голосов
/ 29 марта 2020

У меня есть main.go

package main

import (
    "context"
    "fmt"
    "log"

    model "model"

    "github.com/aws/aws-lambda-go/events"
    "github.com/aws/aws-lambda-go/lambda"
)

func handler(...){
}

Я пытаюсь импортировать модель, которая находится в каталоге model, и файл называется model.go

Он просто содержит:

package model

type xxx struct {
    xxx
}

Я пытаюсь импортировать это в основной, но у меня есть ошибка:

build: cannot load model: cannot find module providing package model

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Если ваш модуль model не является локальным, вы можете использовать ответ Tonys, и он будет работать нормально, но если вы используете этот модуль локально, вам нужно будет добавить пути в ваш файл go.mod.

Так, например, Локальный модуль model содержит только model.go, который имеет следующее содержимое

package model

type Example struct {
    Name string
}

func (e *Example) Foo() string {
    return e.Name
}

Для этого локального модуля должно быть необходимо запустить модуль с помощью команды go mod init model и содержимого ./model/go.mod будет

module model
go 1.13

В основном модуле, в который вы импортируете этот модуль, вам необходимо добавить следующую строку

require model v1.0.0
replace model v1.0.0 => {Absolute or relative path to the model module}

Так файл go.mod вашего main модуля тестирования будет выглядеть следующим образом

module main

require model v1.0.0
replace model v1.0.0 => ./model

go 1.13

При настройке этого модуля вы можете использовать этот модуль test с import "model"

Следовательно, при тестировании модуля с основным методом

package main

import (
    model "model"
)

func main() {
    example := model.Example{
        Name: "Hello World",
    }
    println(example.Foo())
}

Выход будет

Hello World
1 голос
/ 29 марта 2020

Если ваш go.mod выглядит следующим образом:

module github.com/meakesbia/myproject

go 1.14

, вам необходимо импортировать пакет модели, используя полную ссылку на модуль:

import "github.com/meakesbia/myproject/model"

Если это полностью локальный проект затем замените github.com/meakesbia на название модели из go.mod например:

module meakesbia/myproject

go 1.14
import "meakesbia/myproject/model"

Вам не нужно добавлять директиву replace в файл go.mod, если вы не делаете локальные изменения в модуле, который импортируется из, например, github .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...