【发布时间】:2019-01-27 08:58:11
【问题描述】:
我希望使用 erlang 客户端库与我的一个项目的 mqtt 代理进行通信。所以我使用 rebar3 的内置模板启动了一个应用程序,并添加了 emqttc 作为依赖项。由于erlang/otp 21 does not have support for gen_logger(emqttc 依赖于gen_logger) 和tuple_calls 编译器选项不够用,我只好根据this post 降级到erlang@20。
现在降级 erlang 的问题是,rebar3 的所有命令(clean/compile/shell/report 等)都无法按预期工作,并且我以前使用 rebar3 构建的项目无法编译,我会看到以下错误消息:
=错误报告==== 2018 年 8 月 21 日::12:54:29 === 加载 /usr/local/bin/rebar3/rebar/ebin/rebar3.beam 失败:badfile escript: 异常错误:未定义函数 rebar3:main/1 在函数中 escript:run/2(escript.erl,第 759 行)从 escript:start/1 调用 (escript.erl,第 277 行)从 init 调用:start_em/1 从调用 初始化:do_boot/3
=错误报告==== 21-Aug-2018::12:54:29 === beam/beam_load.c(1863): 加载模块 rebar3 时出错:此 BEAM 文件是为稍后编译的 运行时系统的版本高于 20。要解决此问题,请 用 20 编译器重新编译这个模块。 (使用操作码 160;这 模拟器最多只能支持 159 个。)
我已经卸载并重新安装了 rebar3,在网上查找了这个,但没有什么是明确的和特定于 rebar 的。对此的任何帮助将不胜感激。
【问题讨论】:
-
你是从哪里安装钢筋的?
-
来自 Homebrew 的@legoscia
-
我从我的 macOS high sierra 中卸载了 erlang20 和 rebar3 并通过 homebrew 重新安装了它们,只是意识到 homebrew 将 erlang21 视为 rebar3 依赖项并在倒入 rebar3 之前倒入 erlang21 公式。而且我遇到了钢筋模块没有再次加载/编译的相同错误。