找不到函数 `jsx:is_json/1` 尽管包含并编译了 jsx
Cannot find function `jsx:is_json/1` although jsx is included and compiled
我正在使用 Erlang 工具链(OTP、rebar3、cowboy、jsx...)编写一个网络应用程序。以下代码不起作用,因为在运行时无法找到 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
文件夹结构:
我需要知道如何解决这个问题。谢谢。
我找到了这个问题的原因。我没有在 erbid.app.src
的应用程序部分包含模块 jsx
。
{application, erbid, [
{description, "Realtime system"},
{vsn, "0.1.0"},
{registered, []},
{applications, [
kernel,
stdlib,
cowboy,
jsx
]},
{mod, {erbid, []}},
{env, []}
]}.
完全是因为我缺乏 Erlang 经验。
我正在使用 Erlang 工具链(OTP、rebar3、cowboy、jsx...)编写一个网络应用程序。以下代码不起作用,因为在运行时无法找到 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
文件夹结构:
我需要知道如何解决这个问题。谢谢。
我找到了这个问题的原因。我没有在 erbid.app.src
的应用程序部分包含模块 jsx
。
{application, erbid, [
{description, "Realtime system"},
{vsn, "0.1.0"},
{registered, []},
{applications, [
kernel,
stdlib,
cowboy,
jsx
]},
{mod, {erbid, []}},
{env, []}
]}.
完全是因为我缺乏 Erlang 经验。