You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Phoenix中创建LiveView?附失效代码求助

问题排查与修复方案

1. 模板语法版本不兼容

你的代码里使用的~L模板标记是Phoenix LiveView v0.17版本之前的旧语法,新版LiveView已统一改用~H(HEEx模板)替代。如果当前环境是新版LiveView,这个语法会直接导致运行失败。

修复方法:将~L替换为~H,同时修正模板中的引号转义(原代码的"是HTML转义格式,直接使用双引号即可):

defmodule ProjectWeb.CounterLive do
  use Phoenix.LiveView

  def mount(_session, socket) do
    socket = assign(socket, :count, 0)
    {:ok, socket}
  end

  def render(assigns) do
    ~H"""
      <h1>Count: <%= @count %></h1>
    """
  end
end

2. 依赖版本不一致

前后两台电脑的Phoenix/LiveView依赖版本差异可能引发问题:

  • 检查mix.exs文件中phoenix_live_view的版本号,尽量与之前能正常运行的环境保持一致,或升级到当前环境兼容的版本
  • 执行mix deps.get重新拉取依赖,确保依赖安装完整且版本匹配

3. 路由配置缺失

若之前的电脑配置了LiveView路由,而当前项目未配置,也会导致无法访问:
确保在lib/project_web/router.ex中添加对应路由:

scope "/", ProjectWeb do
  pipe_through :browser
  live "/counter", CounterLive
end

4. 前端资源未正确编译

新版LiveView需要前端引入对应JS模块,需确认:

  • assets/js/app.js中已导入LiveView相关代码:
import "phoenix_live_view"
let liveSocket = new LiveSocket("/live", Socket, {params: {_csrf_token: csrfToken}})
liveSocket.connect()
  • 执行mix assets.deploy或npm run dev重新编译前端资源

内容的提问来源于stack exchange,提问作者Snek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:13:09