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

Posted

技术标签:

【中文标题】我无法在我的 **helloworld** 项目中使用 `ejabberd_auth`【英文标题】:I am unable to use `ejabberd_auth` in my **helloworld** project 【发布时间】:2018-08-19 14:18:10 【问题描述】:

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

我正在使用安装了 Erlang 插件的 IntelliJ Idea。

提前谢谢大家。

更新: 我在 Ubuntu 16.04 LTS

【问题讨论】:

【参考方案1】:

我可以让你克服这个错误。方法如下...

当我在 erlang shell 中编译一个模块时,编译器会在同一目录中创建一个.beam 文件,它允许我调用模块中定义的函数。在您的情况下,如果您 cd 进入目录:

 .../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。

您是否在某处学习教程?

【讨论】:

感谢@7stud 的回复。我应该提到我刚刚开始学习 Erlang 和 Ejabberd。我正在使用 Intellij 并为 IntelliJ 安装了 Erlang 插件。您介意说明创建成功调用 `try_register(>, >, >) 的项目的分步过程吗?谢谢你。你会是一个救生员。我差点把头发扯掉! 嗨@7stud。我只是在这个问题上加了一个赏金。如果您可以根据赏金详细信息说明答案,那就是您的了。感谢您迄今为止的帮助。我真的很感激。

以上是关于我无法在我的 **helloworld** 项目中使用 `ejabberd_auth`的主要内容,如果未能解决你的问题,请参考以下文章

我无法在我的 Python 项目中使用多线程

Bamboo 在我的 Spring 项目中无法识别测试

React Native Agora 无法在我的项目频道中获取流列表

我无法在我的项目中使用 Angular 材料 [重复]

无法在 CLion 中运行简单的程序

无法在我的列表框中看到项目的名称,WPF,C#