原因:
我丢失了
erlang-syntax_tools
包裹。
当我在容器上尝试时,没有问题......将关闭问题。
我正在使用最新的软件包,将重新安装或暂时使用容器。
重现步骤
mix deps.get && iex -S mix phx.server
启动服务时,它失败并出现以下错误...Erlang/OTP 24 [erts-12.3.2.1] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit]
===> Analyzing applications...
===> Compiling parse_trans
===> Compiling src/exprecs.erl failed
src/exprecs.erl:none: error in parse transform 'parse_trans_codegen':
exception error: undefined function erl_syntax:string/1
in function parse_trans:get_file/1 (LOCAL_PATH/calendo/deps/parse_trans/src/parse_trans.erl, line 227)
in call from parse_trans:initial_context/2 (/LOCAL_PATH/calendo/deps/parse_trans/src/parse_trans.erl, line 299)
in call from parse_trans_codegen:parse_transform/2 (LOCAL_PATH/calendo/deps/parse_trans/src/parse_trans_codegen.erl, line 147)
in call from compile:foldl_transform/3 (compile.erl, line 1147)
in call from compile:fold_comp/4 (compile.erl, line 418)
in call from compile:internal_comp/5 (compile.erl, line 402)
in call from compile:'-internal_fun/2-anonymous-0-'/2 (compile.erl, line 229)
即使混合 deps.compile prase_trans 或 deps.clean & deps.get 也会失败
我的本地设置是OTP 24、Elixir 1.13.4、Phoenix 1.6.10、rebar 3.19.0、Erts 12.3.2.1,整个应用程序代码都在这里。只需添加
timex
依赖项并启动服务就会导致此问题。
问题描述
当我添加
timex
dep 来混合并运行服务而无需任何额外代码时,错误就会发生。因此它是由其中的一个构造引入的。
这个错误很奇怪,因为 erl_syntax:string/1
似乎是一个有效的调用,它在错误堆栈中被通知为未定义。
安装包
erlang-syntax_tools
修复了timex
中所需的parse_trans问题。
我没有足够的声誉来发表评论,也许这只是OP的一个拼写错误,但在我的系统上(根据elixir安装说明添加ppa:rabbitmq/rabbitmq-erlang apt存储库后的ubuntu 22.04)我需要安装
erlang-syntax-tools