在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)
难道我做错了什么?
应用程序的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)