New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pow.Phoenix.RegistrationController not available? #22

Closed
wdiechmann opened this Issue Sep 10, 2018 · 8 comments

Comments

Projects
None yet
2 participants
@wdiechmann
Copy link

wdiechmann commented Sep 10, 2018

I've followed the Getting Started (Phoenix) section in the README to the letter but when I 'fire up' the iex -S mix phx.server and try going to localhost:4000/registration/new I'm told that

$ iex -S mix phx.server
Erlang/OTP 21 [erts-10.0.7] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe] [dtrace]

[info] Running PowwowWeb.Endpoint with Cowboy using http://0.0.0.0:4000
Interactive Elixir (1.7.3) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> 10:25:47 - info: compiled 6 files into 2 files, copied 3 in 874 ms
[info] GET /registration/new
[info] Sent 500 in 69ms
[error] #PID<0.398.0> running PowwowWeb.Endpoint (cowboy_protocol) terminated
Server: localhost:4000 (http)
Request: GET /registration/new
** (exit) an exception was raised:
    ** (UndefinedFunctionError) function PowwowWeb.Pow.Phoenix.RegistrationController.init/1 is undefined (module PowwowWeb.Pow.Phoenix.RegistrationController is not available)
        PowwowWeb.Pow.Phoenix.RegistrationController.init(:new)
        (powwow) lib/powwow_web/router.ex:1: anonymous fn/1 in PowwowWeb.Router.__match_route__/4
        (phoenix) lib/phoenix/router.ex:278: Phoenix.Router.__call__/1
        (powwow) lib/powwow_web/endpoint.ex:1: PowwowWeb.Endpoint.plug_builder_call/2
        (powwow) lib/plug/debugger.ex:122: PowwowWeb.Endpoint."call (overridable 3)"/2
        (powwow) lib/powwow_web/endpoint.ex:1: PowwowWeb.Endpoint.call/2
        (plug) lib/plug/adapters/cowboy/handler.ex:16: Plug.Adapters.Cowboy.Handler.upgrade/4
        (cowboy) /Users/Walther/tmp/meetup/powwow/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4
[info] GET /
[debug] Processing with PowwowWeb.PageController.index/2
  Parameters: %{}
  Pipelines: [:browser]
[info] Sent 200 in 12ms

Any ideas?

@danschultzer

This comment has been minimized.

Copy link
Owner

danschultzer commented Sep 10, 2018

You probably have the routes set up like this:

  scope "/", Powweb do
    pipe_through :browser

    pow_routes()
  end

You should remove the Powweb namespace so it looks like this:

  scope "/" do
    pipe_through :browser

    pow_routes()
  end
@wdiechmann

This comment has been minimized.

Copy link
Author

wdiechmann commented Sep 10, 2018

I did too - but it did not help changing the namespace like your suggestion :(

I'm on macOS 10.13.5, Erlang 21.0.8, Elixir 1.7.3 if that might have anything to do with it?

@danschultzer

This comment has been minimized.

Copy link
Owner

danschultzer commented Sep 10, 2018

I’ve almost the same setup. Can you post the content of router.ex?

@wdiechmann

This comment has been minimized.

Copy link
Author

wdiechmann commented Sep 10, 2018

🤦‍♂️ edited the wrong app (I've been trying out several to see if I could circumvent the issue)

it works!

but what about the

# scope "/", MyAppWeb do
#   pipe_through [:browser, :protected]
#
#   # Add your protected routes here
# end

what is that for?

Thank you so much for sharing this!

/Walther

@danschultzer

This comment has been minimized.

Copy link
Owner

danschultzer commented Sep 10, 2018

Great! That's where you put your protected resources that requires authentication to view (e.g. a user dashboard).

@wdiechmann

This comment has been minimized.

Copy link
Author

wdiechmann commented Sep 11, 2018

sorry to comment on this closed issue - but my scope did look like this

scope "/", PowWeb do
  pipe_through :browser

  pow_routes()
  get "/", PageController, :index
end

and removing the PowWeb namespace did allow me to hit the registration/new url - but at the same time it did 'kill' the "/" url

so, it has to look like this:

scope "/" do
  pipe_through :browser

  pow_routes()
  get "/", PowWeb.PageController, :index
end
@danschultzer

This comment has been minimized.

Copy link
Owner

danschultzer commented Sep 11, 2018

No problem!

I usually keep my app paths in a separate scope like this:

scope "/" do
  pipe_through :browser

  pow_routes()
end

scope "/", PowWeb do
  pipe_through :browser

  get "/", PageController, :index
end
@danschultzer

This comment has been minimized.

Copy link
Owner

danschultzer commented Jan 27, 2019

v1.0.1 has been released that raises an error with instructions when the scope is incorrect to prevent this confusion 🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment