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加载该目录
- 编译模块到指定目录(比如
ebin):elixirc checkout.ex -o ebin - 启动IEx并添加该目录到加载路径:
iex -pa ebin - 此时在IEx中即可正常调用:
Checkout.total_cost(100, 0.2)
方法2:直接在IEx中编译并加载模块
无需单独执行elixirc命令,打开IEx后直接编译文件:
c("checkout.ex")
编译完成后就能直接调用Checkout.total_cost/2函数。
方法3:使用ElixirLS配合项目结构
- 如果是Mix项目,直接在项目根目录执行:
Mix会自动管理所有模块的加载路径,无需额外配置。iex -S mix - 若为单个文件,确保VS Code的工作区是模块所在目录,通过ElixirLS的命令面板(Ctrl+Shift+P)打开IEx会话,扩展会自动处理路径配置。
内容的提问来源于stack exchange,提问作者Sudha Selvakumar
相关产品推荐
相关产品推荐

