Rebar3 + Cowboy 内核 PID 终止

2024-02-17

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

cd ~/apps rebar3 new release tunnel

Then

我复制了我的src文件来自~/tunnel/src/* to ~/apps/tunnel/src/

我遇到了编译错误rebar3 run并发现Erlang“内核 pid 终止”错误 https://stackoverflow.com/questions/30699728/erlang-kernel-pid-terminated-error作为一个可能的解决方案。我重命名了所有内容tunnel_app to tunnel. So my src包含tunnel.erl , tunnel.app.src and tunnel_sup.erl。我根据需要重命名了模块定义。

这是rebar3 run error:

~/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

为什么会崩溃?


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

rebar3 new app tunnel

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rebar3 + Cowboy 内核 PID 终止 的相关文章

  • 在Erlang中如何获取客户端的ip和端口?

    在下面的代码中 服务器正在侦听端口 2345 接受客户端的连接后 它返回 ok Socket start gt ok Listen gen tcp listen 2345 binary packet 4 reuseaddr true act
  • 接收缓冲区的限制

    我通过以下方式与客户端建立了连接 gen tcp listen 1234 binary packet 0 reuseaddr true active false recbuf 2048 此代码执行消息处理 loop Socket gt in
  • erlang 中的错误报告被截断

    警告 erlang n00b 前面 我正在尝试掌握 erlang 并且只是尝试使用牛仔编写一个基本的 hello world 应用程序 我正在模拟一个错误 基本上在代码中的某个位置返回一个无效值 并尝试解释该错误 即 ERROR REPOR
  • 在 Erlang 中如何将元组对列表转换为记录?

    假设我有这个 record my record foo bar baz Keyvalpairs foo val1 bar val2 baz val3 Foorecord my record foo val1 bar val2 baz val
  • 在 Erlang 中确定传入 TCP/IP 连接的 IP 地址和端口

    我想获取传入 TCP IP 连接的 IP 地址和端口号 很遗憾gen tcp s accept and recv函数只返回一个套接字 而gen udp s recv函数还返回地址信息 有没有一种简单的方法来收集属于 Erlang 中套接字的
  • Erlang 代码的持续集成服务器

    您使用什么类型的敏捷工具进行 Erlang 开发 什么持续集成 http en wikipedia org wiki Continuous integration您使用 CI 服务器来构建 Erlang 代码吗 我得到的唯一参考来自 Quo
  • erlang中如何将中缀转换为后缀?

    我刚刚遇到这个帖子 https stackoverflow com questions 4621151 the shortest way to convert infix expressions to postfix rpn in c 相当
  • 为什么在 Erlang 中使用 OTP?

    正如问题所说 使用 Erlang 进行开发时 使用 OTP 设计原则会带来什么好处 我正在开发一个仅接收命令并发送响应的服务器 正如 Jonas 所说 OTP 是一组久经考验的设计元素和习惯用法 用于创建容错系统以及其他功能 例如灵活性 实
  • 对列表中的 Erlang 记录进行排序?

    我在erlang中有一条记录 record myrec id 0 price 0 quantity 0 然后 我有一个记录列表 我想按 id 和价格按降序和升序排序 其中价格是第一个键 如果两个记录具有相同的价格 我想按 id 对它们进行排
  • Erlang 生成问题

    我在 erlang 中遇到了 spawn 问题 似乎进程在一段时间后就死掉了 这是简单的代码 module simple export server 1 client 1 owner 1 spawn n 2 start 1 main 1 s
  • 在 Erlang 中使用完全限定的函数调用?

    我刚刚学习了如何在 Erlang 中升级模块 并且我知道只有使用完全限定名称的函数调用 例如module function 重新链接 到加载到 VM 中的当前版本 但未指定模块名称的函数调用不会 重新链接 到当前版本 而是继续使用旧版本 关
  • Erlang 17推荐使用地图替换记录,但是如何让mnesia支持地图?

    在 joe 的 Erlang 的重大改变 中http joearms github io 2014 02 01 big changes to erlang html http joearms github io 2014 02 01 big
  • 与共享数据相比,消息传递的性能损失

    最近有很多关于不使用锁和使用 Erlang 等消息传递方法的讨论 或者关于使用不可变的数据结构 例如函数式编程与 C Java 中的比较 但我关心的是以下几点 AFAIK Erlang 不保证消息传递 消息可能会丢失 如果还要担心消息丢失
  • 如何从数字列表中获取字符串?

    我有一个 Erlang 符号列表 104 105 106 107 如何从此列表中获取字符串 hijk Erlang 中不存在字符串这种数据类型 Stings 只是字符列表 104 105 106 107 and hijk 是完全等价的 事实
  • 有没有办法对默认记录值进行查找?

    给定一个记录 record something id integer name string email undefined string undefined 有没有办法获取字段的默认值 在本例中得到的事实是 something email
  • Node.js 或 Erlang

    当谈到它们可以处理的并发级别时 我真的很喜欢这些工具 Erlang OTP 看起来是更稳定的解决方案 但需要更多的学习和深入研究函数式语言范例 看起来 Erlang OTP 在多核 CPU 方面做得更好 如果我错了 请纠正我 但我应该选择哪
  • Erlang 如何并发处理访问邮箱

    关于如何使用erlang邮箱的信息有很多 但很少找到一篇论文或文档描述erlang如何在VM内部同时实际访问邮箱 据我了解 Erlang VM 必须执行锁定或 CAS 操作以确保消息完整性 erlang幕后有没有什么精巧的方法 我假设您所说
  • 如何修改erlang中的记录?

    我需要修改操作记录中的值 place 和 other place op action walk from place to other place preconds at place me on floor me other place p
  • 使用自定义 mysql 模式的模块扩展 ejabberd?

    代替ejabberd sql https github com processone ejabberd blob master sql mysql sql L95 我正在使用自定义 MySQL 架构 由于遗留原因 我将对某些活动执行一些数据
  • Erlang 应该如何处理通用数据?

    假设我正在使用 Erlang 构建游戏服务器 每个用户检查某些内容 例如找到最近的玩家 是很常见的 因此通常有一个管理器类 在上面的例子中 我们使用互斥锁 据我所知 Erlang 通常会为每个 TCP 连接 用户会话 创建新的 Erlang

随机推荐