Elixir出错:返回错误值:: ok

Den*_*ung 3 elixir-mix elixir

在Elixir上工作时我遇到了一些问题.这是我的mix.exs......

defmodule FlockTest.Mixfile do
  use Mix.Project

  def project do
    [app: :flock_test,
     version: "0.1.0",
     elixir: "~> 1.4",
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     deps: deps()]
  end

  # Configuration for the OTP application
  #
  # Type "mix help compile.app" for more information
  def application do
    # Specify extra applications you'll use from Erlang/Elixir
    [
      extra_applications: [:logger],
      mod: {FlockTest, []}
    ]
  end
...
...
Run Code Online (Sandbox Code Playgroud)

这是代码FlockTest.

defmodule FlockTest do
  @moduledoc """
  Documentation for FlockTest.
  """

  def start(_type, _args) do
    IO.puts "Start Flock"
  end
end
Run Code Online (Sandbox Code Playgroud)

我运行此代码,mix run --no-halt但这导致了这样的错误.

=INFO REPORT==== 12-Nov-2017::17:47:39 ===
    application: logger
    exited: stopped
    type: temporary
** (Mix) Could not start application flock_test: FlockTest.start(:normal,     
[]) returned a bad value: :ok
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?

Dog*_*ert 7

应用程序的start/2功能应该启动并返回应用程序的顶级进程,通常是一个超级用户实例.现在你返回返回的值IO.puts,这是:ok成功的.有效的返回值{:ok, pid} | {:ok, pid, state} | {:error, reason :: term}如此处所述.有关此示例,您可以使用mix new foo --sup和签出创建新应用程序lib/foo/application.ex.以下是它的start/2外观:

def start(_type, _args) do
  # List all child processes to be supervised
  children = [
    # Starts a worker by calling: A.Worker.start_link(arg)
    # {A.Worker, arg},
  ]

  # See https://hexdocs.pm/elixir/Supervisor.html
  # for other strategies and supported options
  opts = [strategy: :one_for_one, name: A.Supervisor]
  Supervisor.start_link(children, opts)
end
Run Code Online (Sandbox Code Playgroud)