<erl></erl> 中的 Yaws 代码未运行

Posted

技术标签:

【中文标题】<erl></erl> 中的 Yaws 代码未运行【英文标题】:Yaws code inside <erl></erl> not running 【发布时间】: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 然后我看到代码。我可能错过了什么吗? 【参考方案1】:

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

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

【讨论】:

以上是关于<erl></erl> 中的 Yaws 代码未运行的主要内容,如果未能解决你的问题,请参考以下文章

让两个 erl shell 在 OS X 上对话

erl 程序输出的值与 erlang shell 输出的值不同

`erl -make` 命令是不是可以扩展来执行编译 .erl 文件以外的操作?

ERL:从 shell 执行 erl 命令

如何在不中止 erl 的情况下中止 Erlang shell (erl) 中的接收语句?

erl模块翻译