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

asdf升级Elixir和Erlang后:ssl.cipher_suites未定义报错如何解决

报错原因

该报错由Erlang版本不兼容导致,:ssl.cipher_suites/0 是Erlang/OTP 21及更早版本的内置API,从OTP 22开始已被官方正式移除。你升级Erlang版本后,应用的自有代码或第三方依赖仍在调用该已废弃API,触发运行时错误导致应用崩溃。

解决步骤
  • 清理旧构建缓存
    先终止所有应用相关进程,执行以下命令删除历史构建产物和旧依赖缓存:
    mix deps.clean --all
    rm -rf _build
    
  • 更新兼容新版本Erlang的依赖
    绝大多数情况下该报错由旧版本的HTTP相关依赖(如hackney、httpoison)或Web框架依赖调用了旧API导致,执行全量依赖更新即可解决:
    mix deps.update --all
    
    如果你定位到了具体触发报错的依赖,也可单独更新对应依赖,例如:mix deps.update hackney
  • 调整自有代码的SSL API调用
    若更新依赖后仍报错,全局搜索项目代码中直接调用:ssl.cipher_suites/0的逻辑,替换为新版本Erlang支持的API写法,示例如下:
    旧调用写法::ssl.cipher_suites()
    新兼容写法::ssl.cipher_suites(:default, :"tlsv1.2")
    第二个参数可根据你需要支持的TLS版本调整为:"tlsv1.3"等对应值。
  • 验证asdf版本匹配
    确认当前项目目录激活的Elixir与Erlang版本互相兼容,执行以下命令查看当前生效版本:
    asdf current erlang
    asdf current elixir
    
    若版本不匹配,可修改项目根目录下的.tool-versions文件中的版本号,执行asdf install安装对应版本后再操作。
  • 重新构建启动应用
    执行以下命令重新安装依赖、构建项目并启动:
    mix deps.get
    mix compile
    iex -S mix
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 16:39:02