运行rebar3版本的库undef问题

时间:2019-03-14 06:58:02

标签: erlang rebar3

我遇到一个奇怪的问题,我一生无法解决。我有一个rebar3应用,我从中生成了一个发行版。如果我使用rebar3 shell运行该应用程序,则运行良好,但是如果我使用_build/prod/rel/app_name/bin/app_name运行该发行脚本,则该脚本将启动,但是当代码开始存储时会失败。尝试运行lager:start时,它将返回undef,导致应用终止。我已经仔细检查了应用程序配置的各个方面,但找不到任何指向为何无法正常工作的信息。有人有见识吗?

rebar.conf

{erl_opts, [debug_info]}.
{deps, [
    {ranch, {git, "https://github.com/ninenines/ranch.git", {tag, "1.4.0"}}},
    {lager, {git, "https://github.com/erlang-lager/lager.git", {tag, "3.5.1"}}},
    {mongodb, {git, "https://github.com/comtihon/mongodb-erlang.git", {tag, "v3.0.2"}}},
    {eredis, {git, "https://github.com/wooga/eredis.git", {tag, "v1.1.0"}}}
       ]}.

{relx, [
    {release, { tyranny_authservice, "0.1.0" }, [tyranny_authservice, sasl] },
        {sys_config, "./config/sys.config"},
        {vm_args, "./config/vm.args"},
        {dev_mode, false},
        {include_erts, true},
        {extended_start_script, true}
       ]
}.

{profiles, [
        {prod, [{relx, [{dev_mode, false},
                          {include_erts, true},
                                {include_src, false}]}]
            }]
}.

{plugins, [rebar3_hex]}.

{erl_opts, [
        {parse_transform, lager_transform}
  ]}.

1 个答案:

答案 0 :(得分:0)

  1. 尝试将更大范围的依赖应用程序包含在tyranny_authservice.app.src中,如下所示:

    {应用程序,[内核,stdlib,更大的]}。

  2. 另一种选择是添加

    {included_applications,[lager]}

在应用程序资源文件tyranny_authservice.app.src中