文件web / controllers / auth_controller.ex未定义函数plug / 1上的编译错误

时间:2017-04-05 03:12:22

标签: elixir phoenix-framework ueberauth

隐秘错误消息

在尝试为我们的项目实施ueberauth时,我们会看到一个我们以前从未见过的错误消息。 (请注意,这不是ueberauth特有的,在任何未能包含控制器的控制器中都会出现此错误"助手"

确切的错误消息是:

== Compilation error on file web/controllers/auth_controller.ex ==
** (CompileError) web/controllers/auth_controller.ex:4: undefined function plug/1
    (stdlib) erl_eval.erl:670: :erl_eval.do_apply/6
    (elixir) lib/kernel/parallel_compiler.ex:117: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/1

代码快照:https://github.com/dwyl/auth/pull/9/commits/e2550c558832ff9c4a442b570224a1ccacbfdb02

答案:

忘记在我们的控制器文件中包含:controller助手......

use Auth.Web, :controller

感谢Sam Houston查看代码并发现如何修复它。 https://github.com/dwyl/auth/pull/9/commits/823f7d79561f733a9d131b26a3f6a4d74da59842

case某人else中发布此问题+回答在他们的凤凰项目中看到此错误消息,并且在Google上搜索时找不到答案。

2 个答案:

答案 0 :(得分:0)

分享其他人的答案以解释它。

use Auth.Web, :controller

答案 1 :(得分:0)

plug 宏在 Plug.Builder 中定义,您可以在使用前将其导入:

use Plug.Builder

plug :any_plug_you_like

在 Phoenix 的情况下,它在 Phoenix.Controller.Pipeline 中定义,在 Phoenix.Controller 中注入,再次通过 use Auth.Web, :controller 注入。