lobbin
lobbin

Reputation: 147

Google Cloud Function using internal private function

Project looks something like this

project
- internal
  - package
    code.go
- cmd
  - function
    main.go

In cmd/function, the go.mod looks like this:

module github.com/private/repo/cmd/function

go 1.13

require (
    github.com/private/repo/internal/package v0.0.0-00010101000000-000000000000
)

replace github.com/private/repo/internal/package => ../../internal/package

Which works fine locally, however, when deploying as a Cloud Function, it doesn't work, as Cloud Function only contains the "cmd/function" directory.

Instead, I try to copy the module into the project directory and the replace.

project
- cmd
  - function
    main.go
    - internal
      - package
        code.go

replace github.com/private/repo/internal/package => ./internal/package

But this replace seems to be ignored as the Cloud Function deploy build still tries to download this package.

Next, I try using go mod vendor instead, and ignore the go.mod and go.sum files. This seems to do the trick, but not fully, since removing the go.mod, I can't use the internal package anymore.

use of internal package function/vendor/github.com/private/repo/internal/package not allowed

Not sure how I would go about and solve this and still being able to use the internal package name.

Edit: Added a repository showing the error and a simple fix by not using the internal keyword in the library name. https://github.com/lobbin/gcloud-function-error

Upvotes: 1

Views: 591

Answers (1)

marian.vladoi
marian.vladoi

Reputation: 8066

Thank you for reporting this issue.

I filed a Feature Request for this improvement [1].

I suggest you to star the FR to give it more visibility and every time there is an update you will be notified through your email.

Please note there is no ETA for this request at this moment.


[1]. https://issuetracker.google.com/184141587

Upvotes: 1

Related Questions