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

服务器构建Elixir应用遇pc插件不可用及模块加载错误求助

解决Elixir生产构建时的"Plugin pc not available"模块加载错误

我来帮你搞定这个构建报错,这个问题本质是Erlang的pc插件(通常是某个依赖引入的编译插件)没有正确编译或加载,导致找不到模块必需的Atom段。先看看你遇到的具体报错:

执行构建命令:

APP="my_app" MIX_ENV="prod" AUTO_VERSION="" BRANCH="master" SKIP_RELUP_MODIFICATIONS="" RELUP_MODIFICATION_MODULE="" USING_DISTILLERY="true" mix do clean, compile

出现错误:

===> Plugin pc not available. It will not be used.
=ERROR REPORT==== 30-Apr-2018::10:21:55 ===
beam/beam_load.c(1287): Error loading module pc: mandatory chunk of type 'Atom' not found
=ERROR REPORT==== 30-Apr-2018::10:21:55 ===
Loading of /tmp/edeliver/my_app/builds/deps/re...

下面是几个经过验证的解决方案,按顺序尝试即可:

1. 彻底清理并重建依赖缓存

缓存损坏是这类问题的常见原因,先把旧的构建文件和依赖全清掉,重新来:

# 清理项目和依赖的编译产物
MIX_ENV=prod mix clean --deps
# 删除整个deps和_build目录,确保没有残留
rm -rf deps _build
# 重新拉取所有依赖
MIX_ENV=prod mix deps.get
# 重新编译项目
MIX_ENV=prod mix compile

2. 检查并修复引入pc的依赖版本

pc插件一般是由Erlang依赖(比如p1_utils这类库)带进来的,可能是依赖版本和你的Erlang/Elixir环境不兼容。打开项目的mix.exs,找到相关依赖,指定一个稳定兼容的版本,比如:

defp deps do
  [
    # 如果是p1_utils导致的问题,指定稳定版本并强制覆盖
    {:p1_utils, "~> 1.0", override: true}
  ]
end

修改后重新执行上面的清理和编译步骤。

3. 确认Erlang版本兼容性

较新的Erlang版本对模块的结构要求更严格,可能和旧版本的pc插件不兼容。你可以用版本管理工具(比如asdf或kerl)切换到项目推荐的Erlang版本:

# 示例:用asdf切换到Erlang 21.3(根据项目实际需求调整)
asdf install erlang 21.3
asdf local erlang 21.3

切换完成后重新执行构建命令。

4. 手动编译pc插件

如果上面的方法都不行,试试手动找到pc插件的源码目录(一般在deps/pc或者某个依赖的子目录里),手动编译它:

cd deps/pc
rebar3 compile

编译完成后回到项目根目录,重新执行构建命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:45:09