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

基于Elixir+Phoenix开发Windows桌面应用无法启动窗口求助

解决方案

你遇到的问题是没有把桌面窗口的启动逻辑加入Phoenix的应用启动树,而且默认Phoenix的浏览器自动启动配置也没关,按下面最小步骤修改就能实现需求:

步骤1:调整Phoenix端点配置

打开 config/dev.exs,修改Endpoint配置块,禁用自动打开浏览器,同时强制启动Phoenix服务:

config :hello, HelloWeb.Endpoint,
  server: true,
  open_browser: false,
  # 其余原有配置(http端口、live_reload等)全部保留即可
  ...

生产环境配置同理修改对应config文件即可。

步骤2:修改应用启动入口

打开 lib/hello/application.ex,重写start/2函数,将桌面窗口进程加入应用监督树:

defmodule Hello.Application do
  use Application

  @impl true
  def start(_type, _args) do
    # 初始化桌面运行环境
    Desktop.Window.prepare_start()

    children = [
      HelloWeb.Telemetry,
      {Phoenix.PubSub, name: Hello.PubSub},
      HelloWeb.Endpoint,
      # 新增桌面窗口进程配置
      {Desktop.Window,
       [
         app: :hello,
         id: HelloMainWindow,
         title: "Hello World",
         size: {800, 600},
         # 自动读取Phoenix服务的启动地址,不需要硬编码端口
         url: &HelloWeb.Endpoint.url/0
       ]}
    ]

    opts = [strategy: :one_for_one, name: Hello.Supervisor]
    Supervisor.start_link(children, opts)
  end

  # 原有config_change函数保留即可
  @impl true
  def config_change(changed, _new, removed) do
    HelloWeb.Endpoint.config_change(changed, removed)
    :ok
  end
end

步骤3:启动验证

执行命令前先确认依赖安装完成:
mix deps.get

随后直接运行启动命令即可弹出桌面窗口,不需要其他额外配置:
iex -S mix

你之前使用的mix iex -S属于命令拼写错误,缺省了后续参数,也是启动无响应的原因之一。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:36:10