Phoenix 1.4 如何在插件中使用别名 Routes.page_path

Phoenix 1.4 How to alias Routes.page_path in a Plug

我尝试了几次不同的迭代,但在编译时我一直收到此错误:

Routes.session_path/2 is undefined (module Routes is not available)

我的代码:

defmodule Blackbook.Plugs.RequireAuth do
    import Plug.Conn
    import Phoenix.Controller
    alias Blackbook.Router.Helpers, as: Routes

    def init(_params) do
    end

    def call(conn, _params) do
        if conn.assigns[:current_user] do
            conn
        else
            conn
            |> put_flash(:error, "You must be logged in.")
            |> redirect(to: Routes.session_path(conn, :new))
            |> halt()
        end
    end
end

在 Phoenix 1.4 中有点不同,尝试参考此处的文档 https://hexdocs.pm/phoenix/Phoenix.Router.html 但仍然没有成功。

由于您使用的是 ,默认情况下它会为与网络相关的模块创建一个单独的 YourAppWeb 命名空间。在你的情况下,我认为这只是一个错字,应该是这样的:

alias BlackbookWeb.Router.Helpers, as: Routes

(注意Web部分)