我有here的helloworld应用程序,并进行了一些修改。
一切都可以在localhost上进行。我可以在localhost:8080上看到问候消息。当我尝试进行gcloud应用程序部署时,出现以下错误:
staging for go1.11
Staging Flex app: failed analyzing /home/.../code/app-engine-gomod: cannot find package "github.com/sirupsen/logrus" in any of:
($GOROOT not set)
/home/.../go/src/github.com/sirupsen/logrus (from $GOPATH)
GOPATH: /home/.../go
我尝试使用go mod vendor
和不使用<div style="margin:0;padding:2rem 2rem;min-height:100vh;display: flex;align-items: center;">
<div class="row" style="display: flex;align-items: start;">
<div class="col-md-4" style="text-align: center;">
<img class="static" style="width: 85%;" src="http://nodorojo.com/img/responsive.png"><img class="active" style="width: 85%;" src="http://nodorojo.com/img/responsive.gif">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Perferendis, distinctio, cum iusto esse pariatur consectetur eligendi itaque quos totam voluptas rem mollitia voluptatem veniam reiciendis omnis, saepe eaque animi qui.</p>
</div>
</div>
</div>
都没有帮助。我在做什么错了?
答案 0 :(得分:1)
我为您提供了一种解决方法-这并不漂亮。我不知道为什么App Engine不尝试使用go模块来解决依赖关系,而是只在$ GOPATH中查找。
我的解决方法是将go模块缓存中的相应文件夹复制回Go Path。我很想知道是否有人有更好的解决方案。
您的mod缓存应位于$GOPATH/pkg/mod
将所需的依赖项复制到$GOPATH/src
文件夹中,您应该会很好。
相关问题,希望对您有所帮助。这使我陷入困境,因为我最近切换到了Go模块,而GAE则抱怨依赖项的错误,该依赖项已在较新版本中修复。我多次更新了依赖关系,它在本地测试中运行良好,但在app deploy
上却始终遇到相同的错误。最终,我意识到发生了什么:在本地运行代码时,Go从go模块缓存中正确组装了依赖关系-应用引擎从Go Path的“旧”位置获取了依赖。启用Go模块后,go get
仅更新mod缓存。
答案 1 :(得分:0)
根据App Engine Standard和Flex的文档,两者均支持Go 1.11运行时。现在,我们知道Go 1.11 introduced对Go模块的实验性支持,保持了与GOPATH的兼容性。但是,尽管通过go.mod
文件使用Go模块是标准方法presented,而对于Flex是not mentioned at all。
因此,对于Flex,您可以按照文档中的指示将所有内容都放在GOPATH下,或者坚持使用@shrumm提供的解决方法。