我尝试浏览 LiveView 0.17.1 文档的 JS 示例(https://hexdocs.pm/phoenix_live_view/0.17.1/Phoenix.LiveView.JS.html)
所以我创建了一个新的 Phoenix 1.6.2 应用程序,mix phx.new demo3 --no-ecto
并将mix.exs
deps 部分更改为:
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)
我必须添加/更改什么来解决这个问题?