VSCode本身不运行Elixir,仅通过ElixirLS调用本地elixir/mix命令;配置失败主因是VSCode终端无法识别这些命令,需在集成终端验证which elixir/mix、版本≥1.14/25.0、mix.exs存在且deps已获取,并只装官方ElixirLS扩展。

VSCode 本身不运行 Elixir 程序,它只通过 ElixirLS 调用你系统里已装好的 elixir 和 mix 命令。配置失败的根源几乎全是“VSCode 看不见这些命令”,而不是插件没装对。
确认 elixir 和 mix 在 VSCode 终端里真能执行
别只在系统终端里跑 elixir --version;必须打开 VSCode 集成终端(Ctrl+`),然后执行:
-
which elixir和which mix—— 都得返回具体路径,比如/opt/homebrew/bin/elixir -
elixir --version必须输出Elixir 1.14或更高(≥1.14) -
mix --version必须能正常打印,且底层依赖的erl也得可用(erl -version≥25.0) - Mac 用户用
asdf时,asdf current elixir和asdf current erlang必须有输出,且对应shims下的路径 - Windows 用户用 Chocolatey 安装后,检查
PATH是否含choco写入的路径,elixir和mix命令必须可直接调用
只装官方 ElixirLS 扩展,别碰打包版
VSCode 商店搜 “ElixirLS”,只认准作者是 Jake Beacher、GitHub 仓库为 elixir-lsp/elixir-ls 的那个——名字必须是 ElixirLS: Elixir support and debugger。
- 别装
elixirvscode、vscode-elixir-ls或任何带 “for VSCode” 字样的第三方打包版,它们不维护、调试失效、路径硬编码 - 装完必须重启 VSCode,否则右下角不会显示
ElixirLS ready - 首次打开
.ex文件时,若弹出“运行未签名的扩展”,点Allow,否则 macOS / Windows 会拦截进程,状态栏显示ElixirLS: not connected
项目根目录必须存在 mix.exs,且已执行过 mix deps.get
ElixirLS 不是全局生效的,它只在检测到 mix.exs 的文件夹里才启动完整服务。常见失效场景:
- 你在
lib/my_app_web/controllers下执行code .—— 没有mix.exs,跳转、补全、hover 全部降级 - Umbrella 项目打开了
apps/my_app子目录,而不是顶层根目录(含mix.exs)——跨应用调用无法解析 -
mix.exs是手动建的空文件,但缺.formatter.exs或config/结构 ——mix format按钮灰掉,ElixirLS 卡在Starting ElixirLS… - 有
mix.exs但没跑过mix deps.get—— ElixirLS 加载依赖时超时,Output →ElixirLS面板第一行通常报错:依赖缺失或config/config.exs语法错
运行程序靠终端,不是靠插件按钮
VSCode 没有“一键运行 Elixir 文件”的内置功能。ElixirLS 提供的是语言支持,不是执行器。真正运行程序的方式只有两种:
- 在集成终端里手动执行:
elixir my_script.exs(脚本)或mix run/mix phx.server(项目) - 用
launch.json配置调试任务,例如type: "mix_task"+"task": "phx.server",但这本质仍是调用mix命令 - 别指望点某个图标就能跑
.ex文件——Elixir 不是 Python,没有“当前文件运行”语义;.ex是模块定义,需被mix编译后加载 - 如果想快速测试表达式,开
iex:终端里输iex -S mix,再粘贴代码即可
最常被忽略的一点:所有配置都依赖终端环境与 VSCode 进程共享同一套 PATH 和版本管理上下文。如果你在 zsh 里能用 elixir,但在 VSCode 终端里不能,问题一定出在 shell 初始化逻辑没被继承,而不是插件或设置出了问题。


















