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!
我尝试浏览 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!