module - 为 ejabberd 创建自定义模块时出错
问题描述
我在尝试为 ejabberd 创建自定义模块时遇到问题。
使用:
ejabberd 19.05.81(来自源)
ubuntu server 18.04
我按照https://docs.ejabberd.im/developer/extending-ejabberd/modules/的教程创建了 hello_world 模块
我尝试将源文件 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 安装时,它就在那里。
尽管如此,我还是遇到了同样的错误,如上所述。
有谁知道我做错了什么?
解决方案
我尝试将源文件 mod_hello_world.erl 放在 src 文件夹中,然后使用 make install 进行编译。一切顺利,但如果我在 ejabberd.yml 上添加模块然后启动节点,我会崩溃:
问题已确认。由于最近一次提交,gen_mod 需要 ejabberd 模块来导出四个函数。您在 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) ->
[].
推荐阅读
- r - 尝试使用 rvest 提取 r 包的链接
- php - 一键删除 14 行
- php - 从单独的表中创建列引用 2 列 laravel
- ats - 为什么这个模板在单个文件中工作而不是跨文件工作?
- excel - 在 vba 中,我得到一个未设置的对象变量(错误 91)
- sql - SQL:使用百分比对表进行每月细分
- javascript - HTML 脚本捕获文本并使用自己的值执行事件
- google-apps-script - Google 表格高级 Google 服务 URL 缩短器 403 错误:禁止
- javascript - 如果 polyfill 脚本下载失败会怎样?
- git - Git 卡在 git pull upstream master