web-dev-qa-db-fra.com

Erreur Phoenix: module non chargé/non disponible

Je suis le livre Programming Phoenix, je travaille sur la section pour implémenter la connexion d'un utilisateur authentifié, et je reçois une erreur, je ne sais pas quoi faire avec:

mix phoenix.server
Compiled lib/rumbl.ex
Compiled lib/rumbl/repo.ex
Compiled web/channels/user_socket.ex
Compiled web/web.ex
Compiled web/models/user.ex

== Compilation error on file web/router.ex ==
** (UndefinedFunctionError) undefined function: Rumbl.Auth.init/1 (module Rumbl.Auth is not available)
    Rumbl.Auth.init([repo: Rumbl.Repo])
    (plug) lib/plug/builder.ex:198: Plug.Builder.init_module_plug/3
    (plug) lib/plug/builder.ex:186: anonymous fn/4 in Plug.Builder.compile/3
    (elixir) lib/enum.ex:1387: Enum."-reduce/3-lists^foldl/2-0-"/3
    (plug) lib/plug/builder.ex:186: Plug.Builder.compile/3
    web/router.ex:4: (module)
    (stdlib) erl_eval.erl:669: :erl_eval.do_apply/6
    (elixir) lib/kernel/parallel_compiler.ex:100: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8


== Compilation error on file lib/rumbl/endpoint.ex ==
** (UndefinedFunctionError) undefined function: Rumbl.Router.init/1 (module Rumbl.Router is not available)
    Rumbl.Router.init([])
    (plug) lib/plug/builder.ex:198: Plug.Builder.init_module_plug/3
    (plug) lib/plug/builder.ex:186: anonymous fn/4 in Plug.Builder.compile/3
    (elixir) lib/enum.ex:1387: Enum."-reduce/3-lists^foldl/2-0-"/3
    (plug) lib/plug/builder.ex:186: Plug.Builder.compile/3
    (phoenix) expanding macro: Phoenix.Endpoint.__before_compile__/1
    lib/rumbl/endpoint.ex:1: Rumbl.Endpoint (module)
    (elixir) lib/kernel/parallel_compiler.ex:100: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8


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


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


== Compilation error on file web/controllers/auth.ex ==
** (CompileError) web/controllers/auth.ex:3: module Comeonin.Bcypt is not loaded and could not be found
    (stdlib) erl_eval.erl:669: :erl_eval.do_apply/6
    (elixir) lib/kernel/parallel_compiler.ex:100: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8


== Compilation error on file web/controllers/user_controller.ex ==
** (CompileError) web/controllers/user_controller.ex:2: module Rumbl.Router.Helpers is not loaded and could not be found
    expanding macro: Rumbl.Web.__using__/1
    web/controllers/user_controller.ex:2: Rumbl.UserController (module)
    (elixir) expanding macro: Kernel.use/2
    web/controllers/user_controller.ex:2: Rumbl.UserController (module)
    (elixir) lib/kernel/parallel_compiler.ex:100: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8


== Compilation error on file web/controllers/page_controller.ex ==
** (CompileError) web/controllers/page_controller.ex:2: module Rumbl.Router.Helpers is not loaded and could not be found
    expanding macro: Rumbl.Web.__using__/1
    web/controllers/page_controller.ex:2: Rumbl.PageController (module)
    (elixir) expanding macro: Kernel.use/2
    web/controllers/page_controller.ex:2: Rumbl.PageController (module)
    (elixir) lib/kernel/parallel_compiler.ex:100: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8


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


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


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


== Compilation error on file web/controllers/session_controller.ex ==
** (CompileError) web/controllers/session_controller.ex:2: module Rumbl.Router.Helpers is not loaded and could not be found
    expanding macro: Rumbl.Web.__using__/1
    web/controllers/session_controller.ex:2: Rumbl.SessionController (module)
    (elixir) expanding macro: Kernel.use/2
    web/controllers/session_controller.ex:2: Rumbl.SessionController (module)
    (elixir) lib/kernel/parallel_compiler.ex:100: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8

J'ai vérifié et vérifié deux fois mon code par rapport au livre, mais je ne vois rien.
Mes fichiers pour le projet sont ici: https://github.com/bordeltabernacle/learning-phoenix/tree/master/rumbl

Autant que je sache, la fonction Rumbl.Auth.init est présente dans le fichier contrôleur auth.ex et je ne suis pas sûr de ce qu'est le fichier Rumbl.Router.Helpers ni de la façon de le charger. Lorsque je supprime la seule nouvelle ligne du fichier router.ex, l'application étant en fonctionnement, j'obtiens la même erreur.
J'ai bien peur de ne pas en savoir assez pour résoudre ce problème moi-même.

14
bordeltabernacle

Vous avez une faute de frappe dans https://github.com/bordeltabernacle/learning-phoenix/blob/master/rumbl/web/controllers/auth.ex

import Comeonin.Bcypt, only: [checkpw: 2]

devrait être

import Comeonin.Bcrypt, only: [checkpw: 2]
8
Dmitry Biletskyy

Je pense que vous devriez essayer de nettoyer les dépôts, puis récupérez et compilez à nouveau avant de commencer

alors essayez

mix deps.clean --all
mix deps.get
mix deps.compile
mix phoenix.server

Bonne chance

18
Lê Minh Duy

Vous pouvez également supprimer le répertoire _build et redémarrer votre serveur avec mix phoenix.server (Phoenix 1.2) ou mix phx.server (Phoenix 1.3). 

Faire ceci va chercher toutes les dépendances à partir de zéro pour la première fois. Je préfère cette méthode car je n'ai pas besoin de taper un tas de commandes, il me suffit de supprimer un répertoire et de relancer la commande récente sur mon terminal ... qui est mix phx.server. Oui, je suis paresseux.

Bonne chance.

1
dsignr

Dans mon cas, cette erreur est due à la création accidentelle d'un module dans le répertoire test au lieu du répertoire lib. Le déplacer dans le répertoire lib le corrige.

0
Zoltán