I am new to Phoenix Live View.
router.ex
import Phoenix.LiveView.Router
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_flash
plug Phoenix.LiveView.Flash
mix.exs
defp deps do
[
{:phoenix, "~> 1.4.15"},
{:phoenix_pubsub, "~> 1.1"},
{:phoenix_ecto, "~> 4.0"},
{:ecto_sql, "~> 3.1"},
{:postgrex, ">= 0.0.0"},
{:phoenix_html, "~> 2.11"},
{:phoenix_live_reload, "~> 1.2", only: :dev},
{:gettext, "~> 0.11"},
{:jason, "~> 1.0"},
{:plug_cowboy, "~> 2.0"},
{:phoenix_live_view, "~> 0.9.0"}
web.ex
def controller do
quote do
use Phoenix.Controller, namespace: ReactorWeb
import Plug.Conn
import ReactorWeb.Gettext
import Phoenix.LiveView.Controller
alias ReactorWeb.Router.Helpers, as: Routes
end
end
def view do
quote do
use Phoenix.View,
root: "lib/reactor_web/templates",
namespace: ReactorWeb
# Import convenience functions from controllers
import Phoenix.Controller, only: [get_flash: 1, get_flash: 2, view_module: 1]
# Use all HTML functionality (forms, tags, etc)
use Phoenix.HTML
import ReactorWeb.ErrorHelpers
import ReactorWeb.Gettext
import Phoenix.LiveView.Helpers
alias ReactorWeb.Router.Helpers, as: Routes
end
end
def router do
quote do
use Phoenix.Router
import Plug.Conn
import Phoenix.Controller
import Phoenix.LiveView.Router
end
end
endpoint.ex
socket "/live", Phoenix.LiveView.Socket
package.json
"dependencies": {
"phoenix": "file:../deps/phoenix",
"phoenix_html": "file:../deps/phoenix_html",
"phoenix_live_view": "file:../deps/phoenix_live_view"
},
app.js
import {Socket} from "phoenix"
import LiveSocket from "phoenix_live_view"
let csrfToken = document.querySelector("meta[name='csrf-token']").getAttribute("content")
let liveSocket = new LiveSocket("/live", Socket, {params: {_csrf_token: csrfToken}})
liveSocket.connect()
app.css
@import "../../deps/phoenix_live_view/assets/css/live_view.css";
defmodule ReactorWeb.FooLive do
use Phoenix.LiveView
def mount(_session, socket) do
{:ok, assign(socket, msg: "none")}
end
def render(assigns) do
~L"""
<h1>Hello Gron!</h1>
<div phx-keydown="keydown" phx-target="window">
<%= @msg %>
</div>
"""
end
def handle_event("keydown", %{"key" => key}, socket) do
{:noreply, assign(socket, msg: key)}
end
end
I am getting the below error
Can anyone help me to solve this. Your help is greatly appreciated.