Ошибка компиляции в файле web/controllers/auth_controller.ex undefined function plug/1
Загадочное сообщение об ошибке
Пытаясь реализовать 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
Спасибо Сэму Хьюстону за то, что он взглянул на код и определил, как его исправить. https://github.com/dwyl/auth/pull/9/commits/823f7d79561f733a9d131b26a3f6a4d74da59842
Размещение этого вопроса + ответ в case
кто то else
видит это сообщение об ошибке в своем проекте Phoenix и не находит ответа при поиске.
2 ответа
The
plug
макрос определен в Plug.Builder, и вы можете импортировать его перед использованием с помощью:
use Plug.Builder
plug :any_plug_you_like
в случае Феникса это определено в
Phoenix.Controller.Pipeline
который вводили в
Phoenix.Controller
который снова вводится через
use Auth.Web, :controller
.
Поделиться ответом для других, чтобы интерпретировать его.
use Auth.Web, :controller