2016-11-12 3 views
4

ошибки компиляции в приложении Elixir/Phoenix:модуль Myapp.Router.Helpers не загружен и не может быть найден

== Compilation error on file web/views/layout_view.ex == 
** (CompileError) web/views/layout_view.ex:2: module Myapp.Router.Helpers is not loaded and could not be found 
    expanding macro: Myapp.Web.__using__/1 
    web/views/layout_view.ex:2: Myapp.LayoutView (module) 
    (elixir) expanding macro: Kernel.use/2 
    web/views/layout_view.ex:2: Myapp.LayoutView (module) 
    (elixir) lib/kernel/parallel_compiler.ex:117: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/1 

Моего web.ex является стандартной, ничего нового в ней.

ответ

13

Я видел это, если один из штепселей импортирует MyApp.Router.Helpers и сам используется одновременно в MyApp.Router. Это создает тупик компилятора - для компиляции маршрутизатора необходим штепсель, но для компиляции подключаемого модуля требуется маршрутизатор (и вспомогательный модуль).

Вы можете исправить это с помощью полностью квалифицированных вызовов маршрутизатора помощников вместо того, чтобы импортировать их, т.е.

alias MyApp.Router.Helpers, as: Routes 
Routes.foo_path(conn, :create) 
4

Это также случилось со мной, когда один из моих вилок содержали ошибку и не компилировать. Комментируя содержимое моего маршрутизатора и компиляции снова, я смог увидеть ошибки компиляции в моем подключаемом модуле. Исправив их и раскомментировав содержимое моего маршрутизатора, он смог скомпилировать его нормально.

Смежные вопросы