启动 ejabberd 19.08 时如何修复 'Failed to start ejabberd application: Invalid value of option modules: unknown ejabberd module'

How to fix 'Failed to start ejabberd application: Invalid value of option modules: unknown ejabberd module' when starting ejabberd 19.08

我正在使用最新的 ejabberd 版本 18.09 设置新的 ejabberd 环境。我曾经有一个自定义模块 "mod_offline_http_post_ext" 来处理离线消息,模块源可以在这里找到 https://github.com/tareqassi/mod_offline_http_post_ext/blob/master/src/mod_offline_http_post_ext.erl

mod_offline_http_post_ext 曾经与 ejabberd 19.02 一起工作得很好,但现在 Ejabberd 19.08 由于 "Failed to start ejabberd application: Invalid value of option modules: unknown ejabberd module: mod_offline_http_post_ext. Did you mean mod_offline_http_post_ext" 错误而无法启动。

即使通过./ejabberdctl module_install命令成功添加了模块,并且在执行./ejabberdctl modules_installed.

后显示在列表中,它仍然失败

我已尝试按照此处的说明 https://docs.ejabberd.im/developer/extending-ejabberd/modules/ 创建自定义模块并添加了 gen_mod 现在需要的两个新功能。

I have tried to follow the instruction here https://docs.ejabberd.im/developer/extending-ejabberd/modules/ to create custom modules and added the new two functions that are now required by the gen_mod.

确实如此,请确保您的源代码包含 mod_hello_world.erl 导出的所有函数我将该文件复制到我的 ejabberd/src,然后将其添加到 ejabberd.yml,重新编译 ejabberd,安装并正确启动。

因此,在您的情况下,要么您忘记添加其中一个必需的功能...要么 ejabberd 仍在使用旧的 *.beam 文件,而不是更新后的文件。

如果您从源代码编译 ejabberd,试试这个:将您的模块源代码复制到 ejabberd/src,重新编译,重新安装,删除 ~/.ejabberd-modules 中的模块,然后重新启动。这只是为了确保问题是在源代码中,还是在安装中(重复文件...)