如何让VS Code的ElixirLS使用ASDF全局Elixir版本而非本地.tool-versions版本
可以通过自定义ElixirLS扩展的运行配置,让它优先调用ASDF的全局Elixir、Erlang版本启动,跳过项目本地.tool-versions的版本限制,解决启动报错问题,具体操作如下:
- 首先确认你已经通过ASDF安装了符合ElixirLS版本要求的Elixir(最低1.13及以上)、Erlang(最低24及以上)版本,并设置为全局默认:
执行命令asdf global elixir <符合要求的版本号>、asdf global erlang <符合要求的版本号>完成全局配置。 - 如果你使用的是VS Code版本的ElixirLS扩展,可选择以下任意一种方案配置:
方案一:直接指定Elixir、Erlang可执行文件路径- 分别执行
asdf where elixir <你的全局elixir版本号>、asdf where erlang <你的全局erlang版本号>获取两个运行环境的安装路径 - 打开VS Code设置,搜索
elixirLS.elixirPath,填入第一步拿到的Elixir路径下的bin/elixir完整路径,示例:~/.asdf/installs/elixir/1.15.7-otp-25/bin/elixir - 再搜索
elixirLS.erlangPath,填入第一步拿到的Erlang路径下的bin目录完整路径,示例:~/.asdf/installs/erlang/25.3.2.7/bin - 重启VS Code生效
方案二:配置ASDF跳过本地版本检测 - 打开VS Code设置,搜索
elixirLS.serverEnv,新增一项环境变量:键为ASDF_SKIP_LOCAL_CONFIG,值为1 - 重启VS Code后,ASDF在启动ElixirLS时会自动忽略项目本地的
.tool-versions配置,直接使用全局版本运行
- 分别执行
- 配置完成后如果仍报错,可清除ElixirLS的缓存编译文件,重启编辑器让扩展基于全局高版本重新编译一次服务即可。
上述配置仅修改ElixirLS本身的运行环境,不会影响项目本地的版本规则,代码校验、语法提示仍会适配项目的低版本Elixir语法,不会干扰项目正常编译运行。
内容的提问来源于stack exchange,提问作者Hongseok Yoon
相关产品推荐
相关产品推荐

