0

Erlang ツールチェーン (OTP、rebar3、カウボーイ、jsx...) を使用して webapp を作成しています。次のコードはjsx:is_json/1、実行時に見つからないため機能しません。

handle_login(Req, State) ->
  {ok, Data, _} = cowboy_req:body(Req),

  case jsx:is_json(Data) of
    false -> cowboy_req:reply(400,
      [
        {<<"content-type">>, <<"application/json">>}
      ],
      <<"Invalid JSON">>,
      Req);

スタックトレース:

{[{reason,undef},
   {mfa,{erbid_api_handler,handle,2}},
   {stacktrace,
      [{jsx,is_json,[<<"{\"username\":\"tom\"}">>],[]},
       {erbid_api_handler,handle_login,2,
           [{file,
                "/Users/khanhhua/dev/project-erbid/_build/default/lib/erbid/src/erbid_api_handler.erl"},
            {line,45}]},
       {erbid_api_handler,handle,2,
... truncated for brevity

フォルダ構造: プロジェクトの _build フォルダー構造

問題を解決する方法を知る必要があります。ありがとう。

4

1 に答える 1

0

この問題の原因がわかりました。のアプリケーション セクションにモジュールjsxを含めませんでした。erbid.app.src

{application, erbid, [
    {description, "Realtime system"},
    {vsn, "0.1.0"},
    {registered, []},
    {applications, [
        kernel,
        stdlib,
        cowboy,
        jsx
    ]},
    {mod, {erbid, []}},
    {env, []}
]}.

完全に、Erlang の経験が不足しているためです。

于 2017-01-04T22:51:57.977 に答える