我正在尝试使用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
答案 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
,因为它已经被编译并且应该刚刚启动。