2017-11-12 10 views
0

엘릭서에서 작업하는 동안 문제가 있습니다. 이 ...엘릭서 오류 : 잘못된 값 : : 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 
... 
... 

mix.exs이며,이 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 보이는 방법! 도와 주셔서 감사합니다. –