带有 lager_transform 未定义的 ejabberd 和 Erlang 安装

Posted

技术标签:

【中文标题】带有 lager_transform 未定义的 ejabberd 和 Erlang 安装【英文标题】:ejabberd and Erlang installation with lager_transform undefined 【发布时间】:2016-05-10 17:54:17 【问题描述】:

我是 Erlang 的新手,我一直在尝试在 EC2 ubuntu 机器上安装 Erlang 和 ejabberd,一切都很顺利,直到我开始在 ejabberd 中编译一些外部模块。它开始抛出错误undefined parse transform 'lager_transform'

我尝试了以下所有方法:

    做了钢筋get-depsmake cleanmake depsmake install。在此之后,我可以看到 lager_transform.beam 已制作并出现在 /lib/ 文件夹中。 检查了 rebar.config 文件,它的顶部有较大的 deps,这是被广泛建议的,即使在那之后也没有任何帮助。 在模块顶部添加了-compile[parse_tranform,lager_transform],即使这样他们也没有运气。

我真的被阻止了,无法完成安装。我之前在 fedora 上使用 ejabberd 15.11 和 otp 18.2 完成了此操作,当时它使用 p1_logger 而不是 lager。但是现在,当我使用 otp 18.2 和 ejabberd 16.0 或 15.11 进行全新安装时,我收到了 lager_transform undefined error

【问题讨论】:

你是如何编译这些额外的模块的? 是的,所有额外的模块都已编译,make 会处理这些。我可以从日志中看到模块符合并 make install 表明 lager_transform.bean 安装在 //lib 目录中。 【参考方案1】:

请确保按照文档中的说明编译 ejabberd:http://docs.ejabberd.im/admin/guide/installation/#installing-ejabberd-from-source-code

例如,你可以编译它:

./configure --enable-lager --enable-mysql
make

您需要运行 configure 和 make 来正确设置构建链。

【讨论】:

谢谢 mickael,我会试试的。这很有用。不知怎的错过了。但是 rebar get-deps 不应该接受它吗?因为它正在安装所有东西? rebar get-deps 是不够的。如果您绕过标准的 ejabberd 构建链,我们的代码使用的宏值将无法正确设置。

以上是关于带有 lager_transform 未定义的 ejabberd 和 Erlang 安装的主要内容,如果未能解决你的问题,请参考以下文章

带有requirejs的骨干 - 传递给视图时“模型未定义”

带有自定义 xib 的 TableCellView 未加载

JQuery DataTables 插件:TypeError:e[j] 未定义

带有 Ionic 4 的 SQLite?无法读取未定义类型错误的属性“then”:无法读取未定义的属性“then”

带有请求承诺的异步/等待返回未定义

Python,如果带有变量的语句错误说未定义