运行phoenix服务器时如何忽略编译警告

时间:2018-11-19 18:46:33

标签: elixir phoenix-framework

我正在尝试使用iex -S mix phx.server从命令行运行phoenix服务器,但是在编译过程中不断收到有关未使用变量的警告。

Compilation failed due to warnings while using the --warnings-as-errors option

我不在乎这些警告,因为我正处于开发过程中,这些var最终将被使用或抛弃。我尝试传递-h和其他明智的选项,但是它们都不起作用,而且我在文档中找不到有关如何使phx.server传递或覆盖选项给编译器的任何内容。

我看过这些文档,但它们并没有帮助

我尝试通过--no-compile选项,但这是不可行的,因为它使我无法在开发期间重新编译。我目前正在使用IO.inspect来调用var,这对于通过未使用的vars检查似乎“足够好”,但是我宁愿能够在编译器中禁用此标志,而不是乱扔我的代码IO.inspect

2 个答案:

答案 0 :(得分:5)

关于此错误消息很清楚:

  

由于使用--warnings-as-errors选项时出现警告,编译失败

您在编译器上启用了此特定标志,它在警告时返回非零退出代码。由于您没有在命令行中手动传递该选项,因此可能是:

  • 通过ENV变量设置(可能由Elixir版本管理器设置)
  • 通过mix别名或任务传递
  • 但很可能它是硬编码在Mixfile下的elixirc_options 中。您可以这样禁用它:

    # mix.exs
    elixirc_options: [warnings_as_errors: false]
    

附带说明,要获取有关编译器选项的帮助,应使用elixirc

± % elixirc --help
Usage: elixirc [elixir switches] [compiler switches] [.ex files]

  -o                        The directory to output compiled files

  --help, -h                Prints this message and exits
  --ignore-module-conflict  Does not emit warnings if a module was previously defined
  --no-debug-info           Does not attach debug info to compiled modules
  --no-docs                 Does not attach documentation to compiled modules
  --verbose                 Prints compilation status
  --version, -v             Prints Elixir version and exits
  --warnings-as-errors      Treats warnings as errors and return non-zero exit code

** Options given after -- are passed down to the executed code
** Options can be passed to the Erlang runtime using ELIXIR_ERL_OPTIONS
** Options can be passed to the Erlang compiler using ERL_COMPILER_OPTIONS

另请参见:Get the compiler to exit if a compile-time warning is raised

答案 1 :(得分:1)

如果您先运行 mix compile --warnings-as-errors=false,那么您可以毫无问题地运行 iex -S mix phx.server,因为它已经被编译并且应该刚刚启动。