Ошибка Erlang Kernel pid завершена

Я пытаюсь использовать relx для выпуска приложения. Релкс сделал это без проблем. Но когда я запускаю приложение, у меня есть ошибка:

{"Kernel pid terminated",application_controller,"
{application_start_failure,iqServer,{bad_return,{{iqServer_app,start,[normal,[]]},  
{'EXIT',{undef,[{iqServer_app,start,[normal,[]],[]},
{application_master,start_it_old,4,[{file,\"application_master.erl\"},
{line,272}]}]}}}}}"}

Как я понял из ошибки у меня проблема в функции iqServer:start/2. start/2 выглядит так:

-module(iqServer).
-behaviour(application).

-export([start/2, stop/1]).

start(_StartType, _StartArgs) ->
    Dispatch = dispatch_rules(),
    {ok, _} = cowboy:start_http(http_listener, 100, [
        {ip,{127,0,0,1}}, 
        {port, 6000}], [
        {env, [{dispatch, Dispatch}]}
    ]),
    iqServer_sup:start_link().

stop(_State) ->
    ok.

dispatch_rules() ->
    cowboy_router:compile([
        {'_', [
            {"/test/", cowboy_static, {file, "priv/index.html"}},
            {"/test/:group/:method", iqServer_test_handler, []}
        ]}
    ]).

Раньше я запускал свое приложение этой командой: erl -pa ebin deps/*/ebin -s iqServer и все работало нормально. И теперь я не знаю, где беда.

Это мой файл iqServer.app.src:

{application, iqServer,
 [
  {description, "Test app"},
  {vsn, "0.1"},
  {registered, [iqServer]},
  {applications, [
                  kernel,
                  stdlib,
                  crypto,
                  cowlib,
                  ranch,
                  gproc,
                  cowboy
                 ]},
  {mod, { iqServer_app, []}},
  {modules, [
      iqServer,
      .....
      iqServer_sup,
      iqServer_tools
      ]}
 ]}.

Makefile:

PROJECT = iqServer

DEPS = cowboy sync gproc jsx epgsql
COMPILE_FIRST = iqServer_api_method
ERLC_OPTS = +debug_info
dep_cowboy = git https://github.com/ninenines/cowboy.git HEAD
dep_gproc = git git://github.com/esl/gproc.git HEAD
dep_jsx = git git://github.com/talentdeficit/jsx.git HEAD
dep_epgsql = git git://github.com/epgsql/epgsql.git HEAD

include erlang.mk

relx.config:

{release, {iqServer, "1"}, [iqServer]}.

{extended_start_script, true}.
{sys_config, "rel/sys.config"}.

{vm_args, "rel/vm.args"}.

person Nikolay Bildeyko    schedule 08.06.2015    source источник
comment
Как называется модуль, в котором определена функция start?   -  person legoscia    schedule 08.06.2015
comment
@legoscia Имя iqServer. Я добавил полный код этого модуля в тему.   -  person Nikolay Bildeyko    schedule 08.06.2015
comment
могут быть проблемы с версией   -  person Bakhtiiar Muzakparov    schedule 25.03.2018


Ответы (1)


В вашем файле приложения у вас есть эта строка:

  {mod, { iqServer_app, []}},

Это означает, что при запуске приложения должна вызываться функция start/2 в модуле iqServer_app. Однако модуль обратного вызова вашего приложения называется iqServer. Либо измените имя модуля в файле приложения, либо переименуйте модуль.

person legoscia    schedule 08.06.2015
comment
Хм, я устал от этого, и я все еще получаю сообщение об ошибке: > stackoverflow.com/questions/42283588/ Я переименовал все с iqServer_app в iqServer - person quantumpotato; 16.02.2017