将 ibrowse 依赖项添加到 Makefile 后,Cowboy Web 服务器在启动时崩溃

Cowboy webserver crashes on startup after adding ibrowse dependency to Makefile

我目前正在使用 Cowboy 作为 Web 服务器框架在 Erlang 中开发服务器。在启动时,我需要能够进行服务器端 HTTP 调用以从其他 Web 服务器获取文件,因此我在 ibrowse

中包含了一个 Makefile 依赖项

ibrowse 文档没有提到任何关于添加为 Cowboy 依赖项的具体内容,但 erlang.mk 文档表明我只需要添加一行

DEPS = ibrowse

但是,一旦我添加此行,Cowboy 就会在启动时崩溃

=INFO REPORT==== 15-Feb-2018::14:51:13 ===
    application: geo_server
    exited: {bad_return,
                {{geo_server_app,start,[normal,[]]},
                 {'EXIT',
                     {undef,
                         [{cowboy_router,compile,
                              [[{'_',
                                    [{"/",default_handler,[]},
                                     {"/client_info",client_info_handler,[]},
                                     {"/search",request_handler,[]}]}]],
                              []},
                          {geo_server_app,start,2,
                              [{file,"src/geo_server_app.erl"},{line,8}]},
                          {application_master,start_it_old,4,
                              [{file,"application_master.erl"},
                               {line,273}]}]}}}}
    type: permanent
{"Kernel pid terminated",application_controller,"{application_start_failure,geo_server,{bad_return,{{geo_server_app,start,[normal,[]]},{'EXIT',{undef,[{cowboy_router,compile,[[{'_',[{\"/\",default_handler,[]},{\"/client_info\",client_info_handler,[]},{\"/search\",request_handler,[]}]}]],[]},{geo_server_app,start,2,[{file,\"src/geo_server_app.erl\"},{line,8}]},{application_master,start_it_old,4,[{file,\"application_master.erl\"},{line,273}]}]}}}}}"}
Kernel pid terminated (application_controller) ({application_start_failure,geo_server,{bad_return,{{geo_server_app,start,[normal,[]]},{'EXIT',{undef,[{cowboy_router,compile,[[{'_',[{"/",default_handle
heart: Thu Feb 15 14:51:14 2018: Erlang is crashing .. (waiting for crash dump file)
heart: Thu Feb 15 14:51:14 2018: Would reboot. Terminating.
gmake: *** [erlang.mk:6639: run] Error 1

去掉这个依赖,Cowboy 就可以正常启动了。

PROJECT = geo_server
PROJECT_DESCRIPTION = Geographic information server
PROJECT_VERSION = 0.1.0

DEPS = cowboy
dep_cowboy_commit = 2.2.2
DEP_PLUGINS = cowboy

include erlang.mk

DEPS = ibrowse

我把 DEPS = ibrowse 放在 include elrang.mk.

行之前还是之后也没关系

经过一番摸索,这似乎是 Cowboy make run 进程工作方式中的一个缓存问题。

添加 ibrowse 似乎需要两次调用 make run。如果我的代码随后崩溃,我必须再次添加然后删除 ibrowse,然后才能看到修改后的代码 运行.

谢谢

克里斯·W

DEPS 只需要出现一次并且包含一个 space 分隔的依赖项列表

来自 erlang.mk documentation

DEPS List of applications this project depends on that need to be fetched by Erlang.mk.

解决方法: DEPS = 牛仔 ibrowse