2017-01-15 14 views
0

ejabberdでカスタムモジュールを作成しました。ejabberdでカスタムモジュールを作成

14:05:26.453 [critical] Problem starting the module mod_conversation for host <<"localhost">> 
options: [] 
error: undef 
[{mod_conversation_undefined,init,[<<"localhost">>,[]],[]}, 
{mod_conversation,start,2,[{file,"src/mod_conversation.erl"},{line,30}]}, 
{gen_mod,start_module,3,[{file,"src/gen_mod.erl"},{line,154}]}, 
{lists,foreach,2,[{file,"lists.erl"},{line,1337}]}, 
{ejabberd_app,start,2,[{file,"src/ejabberd_app.erl"},{line,77}]}, 
{application_master,start_it_old,4, 
        [{file,"application_master.erl"},{line,273}]}] 
14:05:26.453 [critical] ejabberd initialization was aborted because a module start failed. 

Crash dump is being written to: //var/log/ejabberd/erl_crash_20170115-140523.dump...done 
Problem starting the module mod_conversation for host <<"localhost">> 
options: [] 
error: undef 
[{mod_conversation_undefined,init,[<<"localhost">>,[]],[]}, 
{mod_conversation,start,2,[{file,"src/mo 

私はすでに新しいモジュールを追加します。>機能

IQDisc = gen_mod:get_opt(iqdisc, Opts, fun gen_iq_handler:check_type/1, 
    one_queue), 
    Mod = gen_mod:db_mod(Host, Opts, ?MODULE), 
    Mod:init(Host, Opts) 

ejabberdを再起動した後、それは私に重大なエラーが発生します - 主な問題は、私は(HOST)スタートでMySQLとmnesia両方のサポートを追加したい場合ということですejabberd構成ファイル内にあります。削除した場合

Mod = gen_mod:db_mod(Host, Opts, ?MODULE), 
Mod:init(Host, Opts)] 

モジュールが正常に起動します。この問題を解決するために私を助けてください。

答えて

0

Mod可変内容はmod_conversation_undefinedと思われる。なぜgen_mod:db_mod/3mod_conversation_undefinedを返しますか。

+0

ejabberdは、私のデフォルトのdb_typeがsqlであるように、このモジュールで使用されているデータベースを推測しません。他のejabberdモジュールにも同じコードがあります。なぜMod変数が定義されていないのですか? –

0

データベースバックエンドを使用する場合は、mod_conversation_ $ BACKENDモジュールを作成する必要があります。 mod_conversation_mnesia、mod_conversation_sqlなど モジュールのmod_opt_type/1コールバックに 'db_type'オプションを追加する必要があります。そうしないと、バックエンドは無視され、mod_conversation_undefinedが得られます。 mod_privateのような単純なモジュールのように、他のモジュールでどのように処理されているかを見ることができます。

関連する問題