Я пытаюсь развернуть облачную функцию Google в Go , но при развертывании произошла ошибка, поскольку я одновременно использую подпакеты и"внутренние модули" (только определено на моем хосте, нигде не развернуто). У меня есть следующая структура:
.
├── function
│ ├── package1
│ │ └── file1.go
│ ├── function.go
│ ├── go.mod
│ └── go.sum
└── common
├── common.go
├── go.mod
└── go.sum
Содержимое моего function.go
(точка входа в мою облачную функцию):
package function
import (
"github.com/.../function/package1"
"github.com/.../common"
)
// use functions from package1 and common
Темы были рассмотрены здесь индивидуально:
Первая запись указывает на использование vendoring и исключает go.mod
и go.sum
из источника, чтобы иметь возможность использовать модуль common
, в то время как вторая запись указывает на включение go.mod
и go.sum
без поставщика, чтобы иметь возможность использовать подпакеты.
Но мне интересно: возможно ли использовать оба одновременно? Или в зависимости от поставщика требуется поместить все исходные файлы .go
в один каталог (без подпакетов)? Аналогично, использование подпакетов требует не использовать вендоринг? Как я могу структурировать свой код, чтобы избежать этих ограничений, или что я могу сделать (развернуть модуль common
где-нибудь, ...)?
Кроме того, в документации "Определение зависимостей" для функций Go Cloud указано, что:
Облачные функции в Go должны предоставлять все свои зависимости через или Go-модули с файлом go.mod или каталогом поставщика. Ваша функция не может указывать зависимости, используя одновременно модули Go и каталог поставщика.