在尝试为我们的项目实施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上搜索时找不到答案。
答案 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
注入。