JS.__struct__/1 未定义,无法展开 struct JS

JS.__struct__/1 is undefined, cannot expand struct JS

我尝试浏览 LiveView 0.17.1 文档的 JS 示例 (https://hexdocs.pm/phoenix_live_view/0.17.1/Phoenix.LiveView.JS.html)

所以我使用 mix phx.new demo3 --no-ecto 创建了一个新的 Phoenix 1.6.2 应用程序并将 mix.exs 部分更改为:

  defp deps do
    [
      {:phoenix, "~> 1.6.2"},
      {:phoenix_html, "~> 3.0"},
      {:phoenix_live_reload, "~> 1.2", only: :dev},
      {:phoenix_live_view, "~> 0.17.1"},
      {:floki, ">= 0.30.0", only: :test},
      {:phoenix_live_dashboard, "~> 0.5"},
      {:esbuild, "~> 0.2", runtime: Mix.env() == :dev},
      {:swoosh, "~> 1.3"},
      {:telemetry_metrics, "~> 0.6"},
      {:telemetry_poller, "~> 1.0"},
      {:gettext, "~> 0.18"},
      {:jason, "~> 1.2"},
      {:plug_cowboy, "~> 2.5"}
    ]
  end

之后我创建了一个 LiveView 页面并添加了这个示例代码:

  def hide_modal(js \ %JS{}) do
    js
    |> JS.hide(transition: "fade-out", to: "#modal")
    |> JS.hide(transition: "fade-out-scale", to: "#modal-content")
  end

启动服务器失败:

$ mix phx.server
Compiling 1 file (.ex)

== Compilation error in file lib/demo3_web/live/stock_watch_live.ex ==
** (CompileError) lib/demo3_web/live/stock_watch_live.ex:66: JS.__struct__/1 is undefined, cannot expand struct JS. Make sure the struct name is correct. If the struct name exists and is correct but it still cannot be found, you likely have cyclic module usage in your code
    lib/demo3_web/live/stock_watch_live.ex:66: (module)

我需要 add/change 什么才能解决这个问题?

在文件顶部添加 alias Phoenix.LiveView.JS 可以解决问题。感谢@scott-thompson!

文档刚刚更新。 https://github.com/phoenixframework/phoenix_live_view/commit/a0b39649ce6f02561033fd42c7205644fe3a706b#diff-a095f1aa9c79bb58142c5628142a5ddc52bb344547400409a8c6a3237896cedc