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

@js在Rocket Chat提问:Docker化eWallet服务器登录接口触发FunctionClauseError

解决Docker化eWallet服务器登录时的FunctionClauseError异常

这个错误的根源其实很清晰——服务端某个需要URL-safe Base64解码的加密密钥参数是nil,导致Elixir的Base.url_decode64/2函数找不到匹配的处理子句(它只接受二进制字符串作为第一个参数,无法处理nil值)。下面是一步步的排查和解决方法:

  • 检查加密密钥环境变量配置
    eWallet依赖Salty库处理加密操作,必须通过环境变量设置有效的加密密钥(通常是EWALLET_ENCRYPTION_KEY)。如果Docker容器启动时这个变量未配置或者值为空,就会导致nil传入解码函数触发错误。
    打开你的Docker运行命令或者docker-compose.yml文件,确认是否配置了该环境变量,且值不为空。

  • 生成符合要求的加密密钥
    如果还没有合适的密钥,可以用以下命令生成标准的URL-safe Base64密钥:

    openssl rand -hex 32 | base64 | tr '+/' '-_' | tr -d '='
    

    把生成的字符串复制出来,作为EWALLET_ENCRYPTION_KEY的值配置到Docker环境中。

  • 重启容器使配置生效
    修改环境变量后,一定要重启Docker容器,确保新的配置被加载。可以用docker restart <container-name>或者docker-compose restart命令完成重启。

  • 快速验证请求参数
    虽然这个错误大概率是服务端配置问题,但也可以快速确认下登录请求是否正确传递了email和password等必填字段,避免因请求格式错误间接触发异常。

附上你提供的错误详情供参考:

Request: POST /admin/api/login ** (exit) 触发异常: ** (FunctionClauseError) no function clause matching in Base.url_decode64/2 (elixir) lib/base.ex:482: Base.url_decode64(nil, [padding: false]) (salty) lib/salty/utils.ex:18: Salty.Utils.decode_key/2 (salty) lib/salty/secret_box.ex:53: Salty.SecretBox.d...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:16:35