Ошибка компиляции в файле 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
Другие вопросы по тегам