【问题标题】:Rebar3 + Cowboy Kernel PID TerminatedRebar3 + Cowboy Kernel PID 终止
【发布时间】:2017-07-06 03:11:47
【问题描述】:

我安装了rebar3 并创建了一个新版本

cd ~/apps rebar3 new release tunnel

然后

我将src 文件从~/tunnel/src/* 复制到~/apps/tunnel/src/

我遇到了 rebar3 run 的编译错误,并发现 Erlang "Kernel pid terminated" error 作为可能的解决方案。我将有关tunnel_app 的所有内容重命名为tunnel。所以我的src 包含tunnel.erltunnel.app.srctunnel_sup.erl。我根据需要重命名了模块定义。

这是rebar3 run 错误:

~/apps/tunnel:.rebar3 run
===> Verifying dependencies...
===> Compiling tunnel
===> Starting relx build process ...
===> Resolving OTP Applications from directories:
          /Users/quantum/apps/tunnel/_build/default/lib
          /Users/quantum/apps/tunnel/apps
          /usr/local/Cellar/erlang/19.2/lib/erlang/lib
          /Users/quantum/apps/tunnel/_build/default/rel
===> Resolved tunnel-0.1.0
===> Dev mode enabled, release will be symlinked
===> release successfully created!
readlink: illegal option -- f
usage: readlink [-n] [file ...]
Exec: /usr/local/Cellar/erlang/19.2/lib/erlang/erts-8.2/bin/erlexec -boot /Users/quantum/apps/tunnel/_build/default/rel/tunnel/releases/0.1.0/tunnel -mode embedded -boot_var ERTS_LIB_DIR /usr/local/Cellar/erlang/19.2/lib/erlang/lib -config /Users/quantum/apps/tunnel/_build/default/rel/tunnel/releases/0.1.0/sys.config -args_file /Users/quantum/apps/tunnel/_build/default/rel/tunnel/releases/0.1.0/vm.args -pa -- console
Root: /Users/quantum/apps/tunnel/_build/default/rel/tunnel
/Users/quantum/apps/tunnel/_build/default/rel/tunnel
Erlang/OTP 19 [erts-8.2] [source] [64-bit] [smp:8:8] [async-threads:30] [hipe] [kernel-poll:true] [dtrace]


=INFO REPORT==== 16-Feb-2017::15:02:21 ===
    application: tunnel
    exited: {bad_return,
                {{tunnel,start,[normal,[]]},
                 {'EXIT',
                     {undef,
                         [{cowboy_router,compile,
                              [[{'_',
                                    [{"/info",lobby_handler,[]},
                                     {"/join/:name",join_handler,[]},
                                     {"/play/:table_pid/:name/:auth/:team/:action/:x/:y",
                                      play_handler,[]}]}]],
                              []},
                          {tunnel,start,2,
                              [{file,
                                   "/Users/quantum/apps/tunnel/_build/default/lib/tunnel/src/tunnel.erl"},
                               {line,8}]},
                          {application_master,start_it_old,4,
                              [{file,"application_master.erl"},
                               {line,273}]}]}}}}
    type: permanent
{"Kernel pid terminated",application_controller,"{application_start_failure,tunnel,{bad_return,{{tunnel,start,[normal,[]]},{'EXIT',{undef,[{cowboy_router,compile,[[{'_',[{\"/info\",lobby_handler,[]},{\"/join/:name\",join_handler,[]},{\"/play/:table_pid/:name/:auth/:team/:action/:x/:y\",play_handler,[]}]}]],[]},{tunnel,start,2,[{file,\"/Users/quantum/apps/tunnel/_build/default/lib/tunnel/src/tunnel.erl\"},{line,8}]},{application_master,start_it_old,4,[{file,\"application_master.erl\"},{line,273}]}]}}}}}"}
Kernel pid terminated (application_controller) ({application_start_failure,tunnel,{bad_return,{{tunnel,start,[normal,[]]},{'EXIT',{undef,[{cowboy_router,compile,[[{'_',[{"/info",lobby_handler,[]},{"/j

Crash dump is being written

为什么会崩溃?

【问题讨论】:

  • 你为什么将 src 文件从 ~/tunnel/src/* 复制到 ~/apps/tunnel/src/ ?
  • @byaruhaf 我的项目 src 文件已经在 ~/tunnel/src 中了。

标签: erlang cowboy rebar3


【解决方案1】:

如果这是您第一次使用 rebar3,我建议您从 OTP 应用程序开始,而不是 OTP 版本:

rebar3 new app tunnel

然后不要盲目地复制源文件,因为您可能会覆盖在src 下为您创建的文件。事先查看该目录的内容。

我还建议花时间阅读 rebar3 https://www.rebar3.org/docs/basic-usage 页面。

您还必须了解什么是 OTP 应用程序。我知道,有很多东西要理解,有时令人困惑。免费来源是http://learnyousomeerlang.com/building-applications-with-otp。买一本关于 Erlang 的书也很值得。有几个,我建议https://www.manning.com/books/erlang-and-otp-in-action

还有一个免费的在线课程,几天后(2017 年 2 月 20 日)https://www.mooc-list.com/course/functional-programming-erlang-futurelearn

开始

【讨论】:

  • 谢谢!我在关注gist.github.com/flbuddymooreiv/ce1d7a47b12c27bf1616。我在 LearnYouSomeErlang 中落后了几章,感谢您指出这一点。我会查看课程和 RTFM =)
  • 啊,我看到rebar3 release 使多个应用程序可用,而应用程序只有一个 src 目录
猜你喜欢
  • 2011-02-05
  • 2015-08-22
  • 2010-12-19
  • 2017-02-09
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多