0

背景

我正在玩Phoenix LiveView,我已经设置了一个应用程序mix phx.new demo --live --no-ecto

我的主要目标是创建此应用程序的版本,以便我可以根据需要对其进行调整,但我遇到了麻烦。

问题

为了为我的演示应用程序创建一个版本,我遵循了Deploying with Releases教程并更改了所有必要的文件。

将以下内容添加到我的mix.exs

  def project do
    [
      app: :demo,
      version: "0.1.0",
      elixir: "~> 1.7",
      elixirc_paths: elixirc_paths(Mix.env()),
      compilers: [:phoenix, :gettext] ++ Mix.compilers(),
      start_permanent: Mix.env() == :prod,
      aliases: aliases(),
      deps: deps(),
      releases: releases()
    ]
  end

  defp releases, do:
    [
      demo: [
        applications: [demo: :permanent]
      ]
    ]

并正确更改了运行时配置中列出的文件:

https://hexdocs.pm/phoenix/releases.html#runtime-configuration

但是,当我执行时,_build/prod/rel/my_app/bin/demo start什么也没有发生。如果我执行_build/prod/rel/my_app/bin/demo start_iex ,我会得到以下输出:

$ _build/prod/rel/demo/bin/demo start_iex
Erlang/OTP 22 [erts-10.6.4] [source] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1] [hipe]

*** ERROR: Shell process terminated! (^G to start new job) ***
Erlang/OTP 22 [erts-10.6.4] [source] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1] [hipe]

Interactive Elixir (1.11.3) - press Ctrl+C to exit (type h() ENTER for help)
iex>

这让我相信有什么东西崩溃了。

当我访问localhost:4000它时,它说服务器已关闭。

问题

我究竟做错了什么?

4

1 回答 1

0

回答

问题出在我原来的配置文件config/config.exs中。

我有

# Configures the endpoint
config :demo, DemoWeb.Endpoint,
  url: [host: "localhost"],
  secret_key_base: "MY_SECRET_KEY",
  render_errors: [view: DemoWeb.ErrorView, accepts: ~w(html json), layout: false],
  pubsub_server: Demo.PubSub,
  live_view: [signing_salt: "yRZCwQIF"]

在这里我错过了这条线:

# Configures the endpoint
config :demo, DemoWeb.Endpoint,
  server: true

所以完整的配置应该是:

# Configures the endpoint
config :demo, DemoWeb.Endpoint,
  url: [host: "localhost"],
  secret_key_base: "MY_SECRET_KEY",
  render_errors: [view: DemoWeb.ErrorView, accepts: ~w(html json), layout: false],
  pubsub_server: Demo.PubSub,
  live_view: [signing_salt: "yRZCwQIF"],
  server: true

有了这个配置,服务器现在可以工作了。

于 2021-01-22T09:41:45.650 回答