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

生产环境部署Phoenix应用编译失败问题求助

解决Phoenix生产环境编译报错:UndefinedFunctionError for Phoenix.Endpoint.Supervisor.config/2

你的问题核心是服务器依赖环境与本地不一致导致的编译失败,虽然Elixir和OTP的版本差异看起来很小,但这些细节刚好触发了模块加载异常。下面是具体的解决步骤和原因分析:

快速修复步骤

1. 彻底清理并重新安装依赖

服务器上的依赖缓存可能已经损坏或者和本地版本不匹配,先清理后重新拉取:

# 清理所有依赖
mix deps.clean --all
# 重新获取依赖
mix deps.get
# 尝试重新编译
mix compile

2. 统一Elixir的编译OTP版本

注意到你的服务器上Elixir 1.6.5是基于OTP 19编译的,而本地Elixir 1.6.4是基于OTP 20编译的。即使两者都运行在OTP 20上,Elixir的编译版本差异可能会导致依赖兼容性问题。建议:

  • 使用版本管理工具(比如asdf)在服务器上安装和本地完全一致的环境:Erlang/OTP 20 + Elixir 1.6.4(基于OTP 20编译)
  • 或者至少确保服务器上的Elixir是基于OTP 20编译的版本

3. 确认Phoenix版本一致性

检查mix.exs中Phoenix的版本号,确保服务器拉取的依赖和本地完全相同。可以运行mix deps.unlock phoenix然后重新mix deps.get来强制拉取指定版本。

原因分析

你看到的Phoenix.Endpoint.Supervisor.config/2未定义错误,并不是你的代码直接调用导致的——这个调用是Phoenix框架在编译Endpoint模块时自动生成的。出现这个错误说明:

  • 服务器上的Phoenix依赖没有正确编译,或者版本和本地不一致
  • Elixir编译版本与OTP运行时的不匹配,导致模块加载逻辑出现异常

本地能正常编译是因为你的环境依赖完全匹配,而服务器上的微小版本差异刚好打破了这个平衡。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:00:54