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

如何不编译修改文件运行`iex -S mix`?或启动应用上次编译版本?

刚好这两个场景在Elixir日常开发中挺常见的,给你分享靠谱的解决方式:

1. 不编译已修改文件启动iex -S mix

直接给Mix加上--no-compile参数就能跳过编译步骤,命令如下:

iex -S mix run --no-compile

这个参数会让Mix完全跳过编译阶段,直接用上一次成功编译后的代码启动IEx。特别适合你修改了文件但暂时不想编译,只想验证其他逻辑的场景。

2. 跳过编译错误,用上一次编译版本启动

当新模块代码未完成导致编译失败时,首先可以试试上面的--no-compile参数。但如果Mix因为新增了文件而强制尝试编译(比如刚创建了一个新的.ex文件但代码写了一半),还有个更稳妥的办法:直接加载已编译好的BEAM文件启动IEx。

假设你的项目是标准Mix结构,编译后的BEAM文件存放在_build/dev/lib/[你的应用名]/ebin目录下,你可以用这条命令启动:

iex -pa _build/dev/lib/your_app/ebin

这里的-pa参数是告诉IEx把指定目录添加到代码搜索路径中,这样就能直接加载之前成功编译的所有模块。如果你的应用依赖了其他库,Mix其实已经自动处理了依赖的路径,所以大多数情况下这条命令就足够用了。

另外还有个小技巧:如果只是单个修改的文件有问题,你可以临时把这个文件重命名(比如改成my_module_temp.ex),这样Mix就不会尝试编译它,之后正常运行iex -S mix就能用上一次的编译版本,等需要继续开发时再改回原名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:14:52