Heroku review应用程序上的Elixir构建失败,运行mix release时出现(ArgumentError)参数错误:erlang.binary_to_atom(nil,:utf8)

Heroku review应用程序上的Elixir构建失败,运行mix release时出现(ArgumentError)参数错误:erlang.binary_to_atom(nil,:utf8),heroku,elixir,Heroku,Elixir,我们有一个Phoenix应用程序,它已经在Heroku上运行了一年 现在,我正试图使应用程序的拉请求版本能够作为Heroku管道的一部分通过review应用程序运行 该应用程序有三个Heroku构建包: 我们自己的构建包(见下文) 我们自己的构建包非常简单。以下是bin/detect脚本: #!/bin/sh exit 0 #!/bin/bash cd $1 mix release 下面是bin/compile脚本: #!/bin/sh exit 0 #!/bin/bash c

我们有一个Phoenix应用程序,它已经在Heroku上运行了一年

现在,我正试图使应用程序的拉请求版本能够作为Heroku管道的一部分通过review应用程序运行

该应用程序有三个Heroku构建包:

  • 我们自己的构建包(见下文)
  • 我们自己的构建包非常简单。以下是
    bin/detect
    脚本:

    #!/bin/sh
    
    exit 0
    
    #!/bin/bash
    
    cd $1
    mix release
    
    下面是
    bin/compile
    脚本:

    #!/bin/sh
    
    exit 0
    
    #!/bin/bash
    
    cd $1
    mix release
    
    虽然构建一直在为生产工作,但不幸的是,对于设计用于启用审查应用程序的PR来说,当它到达最终构建包时,它失败了。以下是Heroku构建的相关输出:

    -----> https://github.com/orgname/buildpack-name.git app detected
    ** (ArgumentError) argument error
        :erlang.binary_to_atom(nil, :utf8)
        (stdlib) erl_eval.erl:670: :erl_eval.do_apply/6
        (stdlib) erl_eval.erl:878: :erl_eval.expr_list/6
        (stdlib) erl_eval.erl:236: :erl_eval.expr/5
        (stdlib) erl_eval.erl:228: :erl_eval.expr/5
        (stdlib) erl_eval.erl:878: :erl_eval.expr_list/6
        (stdlib) erl_eval.erl:404: :erl_eval.expr/5
     !     Push rejected, failed to compile https://github.com/orgname/buildpack-name.git app.
     !     Push failed
    
    因此,在
    mix-release
    步骤中,它似乎失败了,但错误消息并没有告诉我原因。我发现了一个问题,这表明我试图解决的问题可能是由于缺少一个或多个环境变量。但是,我已经仔细检查了一遍,没有发现任何缺少的环境变量

    任何关于我如何解决这个问题的建议都是非常受欢迎的。

    感谢他的评论,他的评论帮助我找到了问题的原因

    我引入了一个新的环境变量,在
    config/prod.exs
    config/releases.exs
    中都获取了该变量。当我将它从
    config/prod.exs
    中删除时,然后
    mix-release
    成功地为Heroku review应用程序构建了版本


    我想这个故事的寓意是不要在构建时和运行时都配置值。

    只是澄清一下:您是否知道
    mix-release
    确实编译
    config.exs
    ,但在发布启动期间它只加载
    releases.exs
    ?@AlekseiMatiushkin谢谢。是的,我一直在复习,以确保我了解这个问题的各个方面。我目前想弄清楚的是,在版本方面,review应用程序环境与生产环境有什么不同。无论如何,这肯定是一个未解决的环境变量问题。尝试在
    应用程序上打印出所有这些内容。启动/2
    并查看缺少什么?