为ejabberd创建自定义模块时出错

时间:2019-06-27 20:11:26

标签: module xmpp customization ejabberd

尝试为ejabberd创建自定义模块时遇到问题。

使用:
ejabberd 19.05.81(来源)
ubuntu服务器18.04

我按照以下教程创建了hello_world模块 https://docs.ejabberd.im/developer/extending-ejabberd/modules/

我尝试将源文件mod_hello_world.erl放在src文件夹中,然后使用make install进行编译。一切运行顺利,但是如果我在ejabberd.yml上添加模块,然后启动节点,则会崩溃:

19:59:43.683 [紧急]无法启动ejabberd应用程序:选件模块的值无效:'mod_hello_world'不是ejabberd模块

我尝试使用$ HOME / .ejabberd-modules / sources文件夹和命令ejabberdctl module_install mod_hello_world,并在检查是否使用modules_installed进行安装时,它在那里。

仍然,我遇到了与上述相同的错误。

有人知道我在做什么错吗?

1 个答案:

答案 0 :(得分:1)

  

我尝试将源文件mod_hello_world.erl放入src中   文件夹,然后使用make install进行编译。一切顺利   但是,如果我在ejabberd.yml上添加模块,然后启动节点,则会得到一个   崩溃:

问题已确认。由于a recent commit,gen_mod需要ejabberd模块to export four functions。您使用mod_hello_world源代码找到的文档页面尚未更新,因此ejabberd抱怨说它无法将erlang模块识别为ejabberd模块。感谢您提及它!

我已经更新了文档源代码,但是我想自下一个版本以来不会在线更新。此更新的源代码可以正常工作,请尝试:

-module(mod_hello_world).

-behaviour(gen_mod).

%% Required by ?INFO_MSG macros
-include("logger.hrl").

%% gen_mod API callbacks
-export([start/2, stop/1, mod_options/1, depends/2]).

start(_Host, _Opts) ->
    ?INFO_MSG("Hello, ejabberd world!", []),
    ok.

stop(_Host) ->
    ?INFO_MSG("Bye bye, ejabberd world!", []),
    ok.

depends(_Host, _Opts) ->
    [].

mod_options(_Host) ->
    [].