Phoenix 视图模块不可用

Mar*_*l.V 6 phoenix-framework

我的应用程序适用于 api json 请求和常规 html。我的路由器.ex

defmodule MyApp.Router do
  use MyApp.Web, :router

  pipeline :browser do
    plug :accepts, ["html"]
    plug :fetch_session
    plug :fetch_flash
    plug :protect_from_forgery
    plug :put_secure_browser_headers
  end

  pipeline :api do
    plug :accepts, ["json"]
  end

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

    scope "/v1", V1, as: :v1 do
      resources "/users", UserController, except: [:new, :edit, :index]
    end
  end

  scope "/", MyApp do
    pipe_through :browser # Use the default browser stack
    get "/confirm/:token",          UserController, :confirm, as: :user_confirm
  end

end
Run Code Online (Sandbox Code Playgroud)

我的网站/controllers/v1/user_controller.ex

defmodule MyApp.V1.UserController do
  use MyApp.Web, :controller

  def create(conn, %{"user" => user_params}) do
   ...
          conn
          |> put_status(:created)
          |> put_resp_header("location", v1_user_path(conn, :show, user))
          |> render("sign_up.json", user: Map.put(user, :session, result[:session]))
   ...
  end
Run Code Online (Sandbox Code Playgroud)

和我的 web/controllers/user_controller.rb

defmodule MyApp.UserController do
  use MyApp.Web, :controller

  alias MyApp.User

  def confirm(conn, %{"token" => token}) do
...
            render(conn, "confirmed.html")
...
  end

end
Run Code Online (Sandbox Code Playgroud)

我的网站/views/v1/user_view.ex

defmodule MyApp.V1.UserView do
  use MyApp.Web, :view
...
end
Run Code Online (Sandbox Code Playgroud)

和我的 web/views/user_view.ex

defmodule MyApp.UserView do
  use MyApp.Web, :view

end
Run Code Online (Sandbox Code Playgroud)

一切工作正常,直到我添加了一个路由和一个 html 控制器。现在,当我请求 api json 时,出现错误

Request: POST /api/v1/users
** (exit) an exception was raised:
    ** (UndefinedFunctionError) function MyApp.V1.UserView.render/2 is undefined (module MyApp.V1.UserView is not available)
Run Code Online (Sandbox Code Playgroud)

但是如果我删除 web/vews/user_view.ex,那么这个查询就可以正常工作。如何纠正这个错误?

Ste*_*len 8

这些类型的错误通常可以通过运行 mix clean 来解决。在开发中重新加载实时代码期间,您也可能会看到此类错误。在这种情况下,尝试重新启动 Phoenix.Server,如果没有帮助,请运行mix clean