You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code中配置Elixir模块目录路径及IEx会话模块调用异常求助

解决Elixir模块在IEx中无法调用的问题

用户场景

已安装ElixirLS扩展,需要从Elixir模块所在目录打开IEx会话并正确配置路径,当前操作出现模块找不到的错误。

模块代码(checkout.ex)

defmodule Checkout do
  def total_cost(price, tax_rate) do
    price * (tax_rate + 1)
  end
end

执行操作及报错

MacBook-Pro:elixir-intro sudha$ elixirc checkout.ex
MacBook-Pro:elixir-intro sudha$ iex
Erlang/OTP 25 [erts-13.1.1] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit] [dtrace]

Interactive Elixir (1.14.1) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> Checkout.total_cost(100,0.2)

得到如下错误:

** (UndefinedFunctionError) function Checkout.total_cost/2 is undefined (module Checkout is not available)
    Checkout.total_cost(100, 0.2)
    iex:1: (file)
iex(1)> 

解决方案

方法1:编译时指定输出目录,启动IEx加载该目录

  1. 编译模块到指定目录(比如ebin):
    elixirc checkout.ex -o ebin
    
  2. 启动IEx并添加该目录到加载路径:
    iex -pa ebin
    
  3. 此时在IEx中即可正常调用:
    Checkout.total_cost(100, 0.2)
    

方法2:直接在IEx中编译并加载模块

无需单独执行elixirc命令,打开IEx后直接编译文件:

c("checkout.ex")

编译完成后就能直接调用Checkout.total_cost/2函数。

方法3:使用ElixirLS配合项目结构

  • 如果是Mix项目,直接在项目根目录执行:
    iex -S mix
    
    Mix会自动管理所有模块的加载路径,无需额外配置。
  • 若为单个文件,确保VS Code的工作区是模块所在目录,通过ElixirLS的命令面板(Ctrl+Shift+P)打开IEx会话,扩展会自动处理路径配置。

内容的提问来源于stack exchange,提问作者Sudha Selvakumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 07:31:06