【问题标题】:Yaws code inside <erl></erl> not running<erl></erl> 中的 Yaws 代码未运行
【发布时间】:2018-02-04 07:18:49
【问题描述】:

我正在尝试 Yaws,但是遇到了一个问题。当我到达路径时,我的 .yaws 文件中的代码没有编译,而是打印在窗口上。这是我的代码和配置:

<erl>
method(Arg) ->
    Rec = Arg#arg.req,
    Rec#http_request.method.

out(Arg) ->
    {ehtml, f("Method: ~s", [method(Arg)])}.
</erl>

服务器配置:

<server localhost>
    port = 8000
    listen = 127.0.0.1
    docroot = /home/something/
    dir_listings = true
    dav = true
    auth_log = true
    statistics = true
</server>

任何信息将不胜感激,谢谢。

【问题讨论】:

  • 不知道你说的“印在窗户上”是什么意思;请澄清您期望发生的事情以及实际发生的事情。我将您的 &lt;erl&gt; 代码复制并粘贴到一个名为 xxx.yaws 的文件中,然后通过 Yaws 通过其 URL 访问该文件,并按预期获得了文本 Method: GET,所以我不确定您还期待什么。您可能想阅读 yaws.hyber.org/dynamic.yaws 以了解有关在 .yaws 页面中使用 htmlehtml 的信息。另外,请告诉我们您使用的是什么版本的 Yaws。
  • 它在我的浏览器上显示代码,这就是我的意思。
  • 您是说您看到了问题中显示的确切内容,带有&lt;erl&gt; 标签等等?您的 .yaws 文件的名称是什么,您如何在浏览器中访问它?
  • 输出为:method(Arg) -> Rec = Arg#arg.req, Rec#http_request.method。 out(Arg) -> {ehtml, f("Method: ~s" , [method(Arg)])}。 .我正在使用 Yaws 2.0.4。
  • 当导航到 localhost:8000 时,它会列出 docroot 中的文件(我的 example.yaws 所在的位置)然后我输入文件的路径:localhost:8000/example.yaws 然后我看到代码。我可能错过了什么吗?

标签: erlang yaws


【解决方案1】:

问题是您的服务器配置中有dav = true,它打开了WebDAV,这是一种内容管理协议。在这种配置下,.yaws 文件被视为普通文件,而不是需要特殊 Yaws 处理的文件,这就是为什么当您通过浏览器访问该文件时会看到该文件的逐字内容。

从您的配置中删除 dav = true 然后重新启动 Yaws 将使其按您的预期处理您的 example.yaws 文件。

【讨论】:

    猜你喜欢
    • 2016-09-14
    • 2012-10-07
    • 2010-11-26
    • 2011-07-02
    • 2013-08-03
    • 2021-12-31
    • 2013-01-09
    • 2012-04-15
    • 1970-01-01
    相关资源
    最近更新 更多