【问题标题】:Is there a way to launch the browser automatically upon starting the server in Phoenix?有没有办法在 Phoenix 中启动服务器时自动启动浏览器?
【发布时间】:2020-03-18 17:14:23
【问题描述】:

我有一个 Phoenix (1.4) LiveView (0.8) 应用程序,我希望在启动服务器时自动打开浏览器窗口。有谁知道这是否可以做到,如果可以怎么做?

我尝试查看是否可以像为 FE 应用程序所做的那样在 Webpack 中配置该选项,但我无法让它工作。

谢谢!

【问题讨论】:

  • 创建自己的mix 任务并用它来启动服务器+用e打开窗口。 G。壳open.

标签: elixir phoenix-framework phoenix phoenix-live-view


【解决方案1】:

最清晰的方法是使用自定义mix 任务,唯一的问题是您如何实际打开浏览器。这已经在docs 中实现了:

defp browser_open(path) do
    start_browser_command =
      case :os.type do
        {:win32, _} ->
          "start"
        {:unix, :darwin} ->
          "open"
        {:unix, _} ->
          "xdg-open"
      end

    if System.find_executable(start_browser_command) do
      System.cmd(start_browser_command, [path])
    else
      Mix.raise "Command not found: #{start_browser_command}"
    end
  end

现在剩下的就是创建一个自定义任务,从配置中获取主机和端口,并在其中调用 phx.server 任务并打开浏览器:

defmodule Mix.Tasks.Hello do
  use Mix.Task

  def run(_) do
    Mix.Task.run("phx.server")
    env = Application.fetch_env!(:phoenix_test, PhoenixTestWeb.Endpoint)
    browser_open("http://#{env[:url][:host]}:#{env[:http][:port]}")
  end
end

然后你可以用mix hello调用任务。

【讨论】:

    猜你喜欢
    • 2016-05-24
    • 2013-06-23
    • 2017-03-21
    • 2021-10-20
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 2013-12-25
    • 2016-01-24
    相关资源
    最近更新 更多