Phoenix服务器启动Observer失败:模块:observer不可用
解决Phoenix中调用
:observer.start()报错的问题 问题重现
启动Phoenix服务器后调用:observer.start()出现如下错误:
$iex -S mix phx.server iex(1)> :observer.start() ** (UndefinedFunctionError) function :observer.start/0 is undefined (module :observer is not available) :observer.start() iex:1: (file)
使用版本:IEx 1.15.4(编译自Erlang/OTP 26)
原因
从Erlang/OTP 21开始,observer不再是默认自动加载的核心应用,而是作为独立的工具应用存在。如果启动Phoenix时未加载该应用,就会触发模块不可用的错误。
解决办法
方法1:启动时手动加载Observer
启动IEx时直接指定加载Observer应用:
iex -S mix phx.server -e ":application.ensure_all_started(:observer)"
或者进入IEx会话后先执行加载命令,再启动Observer:
iex(1)> :application.ensure_all_started(:observer) iex(2)> :observer.start()
方法2:在项目配置中添加Observer到额外应用
打开项目的config/dev.exs(仅在开发环境启用即可),找到extra_applications配置项,添加:observer:
config :your_app_name, YourAppNameWeb.Endpoint, # 其他配置... extra_applications: [:logger, :runtime_tools, :observer]
修改后重启Phoenix服务器,即可直接调用:observer.start()。
方法3:确保Erlang安装包含Observer组件
部分包管理器安装的Erlang可能默认不包含Observer等工具组件,可通过以下方式处理:
- 使用kerl安装Erlang时,选择完整版本编译
- 使用asdf安装Erlang时,确保安装过程中未排除Observer相关组件
- 从Erlang官方渠道下载完整安装包进行安装
内容的提问来源于stack exchange,提问作者Moon soon
相关产品推荐
相关产品推荐

