我无法在 helloworld 项目中使用ejabberd_auth
。
-behaviour(ejabberd_auth).
...
....
try_register(<<"username">>, <<"example.com">>, <<"secret_password">>).
我得到了错误警告:
helloworld.erl:15: Warning: behaviour ejabberd_auth undefined
-import(ejabberd_auth, [try_register/3]).
...
....
try_register(<<"username">>, <<"example.com">>, <<"secret_password">>).
有了这个我得到:
exception error: undefined function ejabberd_auth:try_register/3
为什么我无法访问 ejabberd_auth
?
我正在使用IntelliJ Idea,安装了Erlang插件。
提前谢谢大家。
更新
我在Ubuntu 16.04 LTS
答案 0 :(得分:4)
我可以让你超越那个错误。以下是......
当我在erlang shell中编译模块时,编译器在同一目录中创建一个.beam
文件,这允许我调用模块中定义的函数。在您的情况下,如果您进入目录:
.../ejabberd/ebin
您将看到所有ejabberd .beam文件,包括ejabberd_auth.beam
。如果你在该目录中启动一个erlang shell,然后发出你的函数调用(不要编译任何东西),你就不会再得到那个错误了。
但是,我得到了错误:
exception error: undefined function jid:nodeprep/1
in function ejabberd_auth:validate_credentials/3 (src/ejabberd_auth.erl, line 796)
in call from ejabberd_auth:try_register/3 (src/ejabberd_auth.erl, line`
该目录中没有jid.beam
个文件。但是:
~/Downloads/ejabberd$ find . -name jid.beam
./deps/xmpp/ebin/jid.beam
您将不得不弄清楚如何编译您的模块,以便您的程序可以使用所有ejabberd模块。请参阅:ejabberd how to compile new module。
我无法在helloworld项目中使用ejabberd_auth。
您是否在某处教程?