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.
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]
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
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.
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.