[英]LIbrary paths for mix compile process
从Elixir和Erlang的brew转换为asdf版本控制工具后,我仍然无法编译我的旧项目:在编译过程中,它尝试引用不存在的Brew的Cellar lib文件:
MacBook-Pro% mix test
==> gettext
Compiling 1 file (.erl)
/usr/local/Cellar/erlang/21.3.2/lib/erlang/lib/parsetools-2.1.8/include/yeccpre.hrl:59: illegal pattern
/usr/local/Cellar/erlang/21.3.2/lib/erlang/lib/parsetools-2.1.8/include/yeccpre.hrl:60: variable 'Error' is unbound
/usr/local/Cellar/erlang/21.3.2/lib/erlang/lib/parsetools-2.1.8/include/yeccpre.hrl:60: variable 'Stacktrace' is unbound
/usr/local/Cellar/erlang/21.3.2/lib/erlang/lib/parsetools-2.1.8/include/yeccpre.hrl:63: variable 'Stacktrace' unsafe in 'try' (line 60)
/usr/local/Cellar/erlang/21.3.2/lib/erlang/lib/parsetools-2.1.8/include/yeccpre.hrl:64: variable 'Error' unsafe in 'try' (line 60)
/usr/local/Cellar/erlang/21.3.2/lib/erlang/lib/parsetools-2.1.8/include/yeccpre.hrl:64: variable 'Stacktrace' unsafe in 'try' (line 60)
could not compile dependency :gettext, "mix compile" failed. You can recompile this dependency with "mix deps.compile gettext", update it with "mix deps.update gettext" or clean it with "mix deps.clean gettext"
即使没有任何/usr/local/Cellar/erlang
文件夹
混合在哪里将使用外部erlang库的路径,以及如何更改它以使用asdf的包?
Erlang以及Elixir都使用$PATH
环境变量中的二进制文件和库文件,如下所述: https : //elixir-lang.org/install.html#installing-erlang
通常在$PATH
的末尾加载asdf,这意味着如果仍然通过brew安装了Erlang和Elixir,则将首先加载它。 也就是说,请仔细检查是否通过brew安装了其他任何Erlang版本。 您可以使用brew uninstall erlang --force
命令卸载所有版本。
还可以使用以下命令在项目的根目录中设置本地Erlang和Elixir版本:
asdf local erlang 21.3.2
asdf local elixir 1.8.1-otp-21
根据您的环境更改版本。
最后检查命令asdf current
是否正在加载正确的版本。 它应该显示如下内容:
elixir 1.8.1-otp-21 (set by /path/to/project/.tool-versions)
erlang 21.3.2 (set by /path/to/project/.tool-versions)
作为最后的手段,请查看https://asdf-vm.com/#/core-manage-asdf-vm?id=having-issues 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.