2017-11-12 8 views
0

エリクシールで作業中に問題があります。 これは私のmix.exs ...エリクサーのエラー:不正な値を返しました::ok

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 
... 
... 

であり、これはFlockTestためのコードです。

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

    def start(_type, _args) do 
    IO.puts "Start Flock" 
    end 
end 

私は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 

私は何か間違っていますか?

答えて

3

アプリケーションのstart/2関数は、アプリケーションのトップレベルプロセス(通常はスーパバイザインスタンス)を開始して返します。今すぐIO.putsによって返された値を返します。成功した場合は:okです。有効な戻り値は、{:ok, pid} | {:ok, pid, state} | {:error, reason :: term}と記載されています(here)。たとえば、mix new foo --supを使用して新しいアプリケーションを作成し、lib/foo/application.exをチェックアウトすることができます。それが動作するようになりまし

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 
+0

:ここでは、次のようにそのstart/2がどのように見えるかです!手伝ってくれてありがとう。 –

関連する問題