Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 如何使用Addict修复Phoenix应用程序中的错误以进行用户身份验证_Elixir_Phoenix Framework - Fatal编程技术网

Elixir 如何使用Addict修复Phoenix应用程序中的错误以进行用户身份验证

Elixir 如何使用Addict修复Phoenix应用程序中的错误以进行用户身份验证,elixir,phoenix-framework,Elixir,Phoenix Framework,我正在Phoenix应用程序中使用Addict实现用户身份验证,请参见 下面是我得到的错误: [error] #PID<0.549.0> running Myapp.Endpoint terminated Server: localhost:4000 (http) Request: GET /register ** (exit) an exception was raised: ** (UndefinedFunctionError) function Myapp.Addict

我正在Phoenix应用程序中使用Addict实现用户身份验证,请参见

下面是我得到的错误:

[error] #PID<0.549.0> running Myapp.Endpoint terminated
Server: localhost:4000 (http)
Request: GET /register
** (exit) an exception was raised:
    ** (UndefinedFunctionError) function Myapp.Addict.AddictController.init/1 is undefined (module Myapp.Addict.AddictController is not available)
        Myapp.Addict.AddictController.init(:register)
        (myapp) web/router.ex:1: anonymous fn/1 in Myapp.Router.match_route/4
        (myapp) lib/phoenix/router.ex:261: Myapp.Router.dispatch/2
        (myapp) web/router.ex:1: Myapp.Router.do_call/2
        (myapp) lib/myapp/endpoint.ex:1: Myapp.Endpoint.phoenix_pipeline/1
        (myapp) lib/plug/debugger.ex:123: Myapp.Endpoint."call (overridable 3)"/2
        (myapp) lib/myapp/endpoint.ex:1: Myapp.Endpoint.call/2
        (plug) lib/plug/adapters/cowboy/handler.ex:15: Plug.Adapters.Cowboy.Handler.upgrade/4
        (cowboy) /Users/development/Desktop/myapp/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4
为什么会发生此错误?我如何解决此问题


提前感谢。

将模块别名传递给
范围
会将该模块预先发送给其中定义的所有路由的所有控制器,包括
addict
路由,这将使它们指向错误的控制器(
Myapp.addict.addict controller
而不是
addict.addict controller
)。您可以在不使用alias模块的情况下将
addict:routes
移动到另一个作用域来修复此问题:

scope "/", Myapp do
  pipe_through :browser # Use the default browser stack

  get "/", PageController, :index
  get "/about", PageController, :about 
  get "/thanks", PageController, :thanks
  resources "/projects", ProjectController
end

scope "/" do
  addict :routes
end

将模块别名传递给
scope
会将该模块预先发送给其中定义的所有路由的所有控制器,包括
addict
路由,这将使它们指向错误的控制器(
Myapp.addict.addict controller
而不是
addict.addict controller
)。您可以在不使用alias模块的情况下将
addict:routes
移动到另一个作用域来修复此问题:

scope "/", Myapp do
  pipe_through :browser # Use the default browser stack

  get "/", PageController, :index
  get "/about", PageController, :about 
  get "/thanks", PageController, :thanks
  resources "/projects", ProjectController
end

scope "/" do
  addict :routes
end

你可以发布完整的错误消息,包括stacktrace吗?你也可以发布你路由器的源代码(
web/router.ex
)?web/router.ex的源代码也可以发布:)如果你从那里删除
addict:routes
,然后添加另一个作用域(在当前作用域结束后),像这样:
作用域“/”do addict(:routes)end
?(该名称空间模块可能会导致此问题。)确实如此。发布作为答案,我会接受-谢谢!你可以发布完整的错误消息,包括stacktrace吗?你也可以发布你路由器的源代码(
web/router.ex
)?web/router.ex的源代码也可以发布:)如果你从那里删除
addict:routes
,然后添加另一个作用域(在当前作用域结束后),像这样:
作用域“/”do addict(:routes)end
?(该名称空间模块可能会导致此问题。)确实如此。发布作为答案,我会接受-谢谢!