我尝试在一台机器上的两个节点上运行我的应用程序: https://dockyard.com/blog/2016/01/28/running-elixir-and-phoenix-projects-on-a-cluster-of-nodes
我创建了配置文件:
[{kernel,
[
{sync_nodes_optional, ['n1@127.0.0.1', 'n2@127.0.0.1']},
{sync_nodes_timeout, 10000}
]}
].
我跑(从终端1):
elixir --name n1@127.0.0.1 --erl "-config sys.config" -S mix phoenix.server
然后(从终端2):
elixir --name n2@127.0.0.1 --erl "-config sys.config" -S mix phoenix.server
我收到了:
** (Mix) Could not start application app: App.start(:normal, []) returned an error: shutdown: failed to start child: App.Endpoint
** (EXIT) shutdown: failed to start child: Phoenix.Endpoint.Server
** (EXIT) shutdown: failed to start child: {:ranch_listener_sup, App.Endpoint.HTTP}
** (EXIT) shutdown: failed to start child: :ranch_acceptors_sup
** (EXIT) {:listen_error, App.Endpoint.HTTP, :eaddrinuse}
我做错了什么?
答案 0 :(得分:1)
您收到此错误的原因是您尝试对同一台计算机上运行的两个节点使用相同的端口(默认为4000)。
尝试做:
PORT=4001 elixir --name n2@127.0.0.1 --erl "-config sys.config" -S mix phoenix.server
您需要更改dev.exs
以支持将环境变量用作端口:
config :my_app, MyApp.Endpoint,
http: [port: String.to_integer(System.get_env("PORT") || "4000")],