使用 Erlang Cowboy 应用程序获得 500 个响应
Getting 500 response with Erlang Cowboy app
我无法解读我在访问用 Cowboy 创建的简单端点时收到的错误消息。我使用 cowboy (https://github.com/overture8/cow_app) 创建了一个简单的应用程序,然后使用 rebar3 shell
启动了该应用程序(不确定这是否正确?)。无论如何,我在到达端点时收到此错误:
Error in process <0.232.0> with exit value:
{[{reason,undef},
{mfa,{hello_handler,init,3}},
{stacktrace,
[{hello_handler,init,
[{tcp,http},
{http_req,#Port<0.7138>,ranch_tcp,keepalive,<0.232.0>,<<"GET">>,
'HTTP/1.1',
{{127,0,0,1},49651},
<<"127.0.0.1">>,undefined,8010,<<"/">>,undefined,<<>>,
undefined,[],
[{<<"host">>,<<"127.0.0.1:8010">>},
{<<"connection">>,<<"keep-alive">>},
{<<"cache-control">>,<<"max-age=0">>},
{<<"upgrade-insecure-requests">>,<<"1">>},
{<<"user-agent">>,
<<"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36">>},
{<<"accept">>,
<<"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8">>},
{<<"dnt">>,<<"1">>},
{<<"accept-encoding">>,<<"gzip, deflate, sdch">>},
{<<"accept-language">>,
<<"en-GB,en;q=0.8,en-US;q=0.6,fr;q=0.4">>}],
[{<<"connection">>,[<<"keep-alive">>]}],
undefined,[],waiting,<<>>,undefined,false,waiting,[],<<>>,
undefined},
[]],
[]},
.
.
.
也许我只是做了一些完全错误的事情——这是我第一次使用 Erlang。
如有任何帮助,我们将不胜感激。
您的 rebar.lock
与 rebar.config
不同步,指向的 cowboy 1.0.1 版本需要 init/3
导出,而不是 init/2
,这是错误 ... {reason,undef}, {mfa,{hello_handler,init,3}}, ...
的意思。
要修复,运行 rebar3 upgrade cowboy
然后 运行 rebar3 shell
。在我 运行 之后,应用程序对我来说工作正常:
$ curl -i http://localhost:8010/
HTTP/1.1 200 OK
server: Cowboy
date: Wed, 07 Sep 2016 09:57:22 GMT
content-length: 13
content-type: text/plain
Hello Erlang!
我无法解读我在访问用 Cowboy 创建的简单端点时收到的错误消息。我使用 cowboy (https://github.com/overture8/cow_app) 创建了一个简单的应用程序,然后使用 rebar3 shell
启动了该应用程序(不确定这是否正确?)。无论如何,我在到达端点时收到此错误:
Error in process <0.232.0> with exit value:
{[{reason,undef},
{mfa,{hello_handler,init,3}},
{stacktrace,
[{hello_handler,init,
[{tcp,http},
{http_req,#Port<0.7138>,ranch_tcp,keepalive,<0.232.0>,<<"GET">>,
'HTTP/1.1',
{{127,0,0,1},49651},
<<"127.0.0.1">>,undefined,8010,<<"/">>,undefined,<<>>,
undefined,[],
[{<<"host">>,<<"127.0.0.1:8010">>},
{<<"connection">>,<<"keep-alive">>},
{<<"cache-control">>,<<"max-age=0">>},
{<<"upgrade-insecure-requests">>,<<"1">>},
{<<"user-agent">>,
<<"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36">>},
{<<"accept">>,
<<"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8">>},
{<<"dnt">>,<<"1">>},
{<<"accept-encoding">>,<<"gzip, deflate, sdch">>},
{<<"accept-language">>,
<<"en-GB,en;q=0.8,en-US;q=0.6,fr;q=0.4">>}],
[{<<"connection">>,[<<"keep-alive">>]}],
undefined,[],waiting,<<>>,undefined,false,waiting,[],<<>>,
undefined},
[]],
[]},
.
.
.
也许我只是做了一些完全错误的事情——这是我第一次使用 Erlang。
如有任何帮助,我们将不胜感激。
您的 rebar.lock
与 rebar.config
不同步,指向的 cowboy 1.0.1 版本需要 init/3
导出,而不是 init/2
,这是错误 ... {reason,undef}, {mfa,{hello_handler,init,3}}, ...
的意思。
要修复,运行 rebar3 upgrade cowboy
然后 运行 rebar3 shell
。在我 运行 之后,应用程序对我来说工作正常:
$ curl -i http://localhost:8010/
HTTP/1.1 200 OK
server: Cowboy
date: Wed, 07 Sep 2016 09:57:22 GMT
content-length: 13
content-type: text/plain
Hello Erlang!