我无法在** helloworld **项目中使用`ejabberd_auth`

时间:2018-03-11 13:13:59

标签: erlang ejabberd

我无法在 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

1 个答案:

答案 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。

您是否在某处教程?