【问题标题】:beego not finding layout tpl file with bee runbeego 找不到带有 bee 运行的布局 tpl 文件
【发布时间】:2016-08-30 12:32:09
【问题描述】:

我在 golang 中使用 beego 构建了一个基于基本布局的网站,我已经将我的页面布局拆分为一个名为 views/_layout.tpl 的文件,并从控制器如下引用它。

func (c *BuyerController) Get() {
    ...
    c.Layout = "_layout.tpl"
    c.TplName = "buyers.tpl"
}

布局中间有所需的行:

    {{.LayoutContent}}

奇怪的是,当我使用 IDEA/IntelliJ 运行 Web 服务器时,它在浏览器中呈现得很好,但是当我从控制台使用 bee run 运行它时,布局文件中的所有 html 都丢失了,只有显示buyers.tpl 的内容。

我已经运行了编译后的应用程序的每个构建,并且发生了同样的情况,由 IntelliJ 构建的那个可以工作,而由bee run 构建的那个不行。

据我所知,我已关注http://beego.me/docs/mvc/view/view.md#layout-design

任何想法我做错了什么,或任何线索如何弄清楚?谢谢。

【问题讨论】:

    标签: go beego


    【解决方案1】:

    GOPATH。再次。典型的情况是我发布了赏金然后立即弄清楚是吗?

    IntelliJ 在.idea/*.iml 中保留自己的GOPATH 信息副本

    <orderEntry type="library" name="GOPATH &lt;web&gt;" level="project" />
    

    我正在运行 gvm 来管理 go 版本,并且为了将包安装在全局正确的位置,我的 go 路径如下:

    $ echo $GOPATH
    /home/tim/.gvm/pkgsets/go1.4.3/global
    

    然而,这意味着我每次切换 go 版本时都必须移动我的 src。为了解决这个问题,我使用gvm linkthis 将我的 src 符号链接到 gvm 文件夹中,这样我的源代码就在 GOPATH 中,正如 go 所期望的那样。这样做的缺点是我必须在点击bee run 之前从cd$GOPATH/src/project/ 而不仅仅是从真实位置运行它(这就是我所做的)。没有它,它会找到 .go 文件,但不会找到布局。我不是 100% 确定为什么,但这是有道理的。

    似乎需要大量的牦牛剃须才能使这一切正常工作,所以也许我遗漏了什么?

    【讨论】:

    • GOPATH 给你带来的问题似乎很奇怪。同样奇怪的是,对于不同的 Go 版本,您有不同的 GOPATH。我认为您的设置可能不符合 Go 工具的期望。运行您的应用程序时,IntelliJ 将打印它正在使用的 GOPATH 以及 GOROOT,并且您可以控制当前工作目录的运行器配置。可能值得检查那些。如果您有任何帮助,请在 Gitter 上联系我。谢谢。
    • 哇,谢谢。整个 gopath 和对 src 的期望完全让我从 go 开始。我的大部分东西都在~/repo/proj.git/* 中,这也让我不开心。 gvm 似乎是个好主意,但也许不是。
    • 答案可能是使用多个 gopath - medium.com/@mnmtanish/using-multiple-gopaths-4b267dcca3f8
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 2011-11-05
    • 1970-01-01
    相关资源
    最近更新 更多