Phoenix无法启动 - 缺少AppName.Endpoint.start_link

sea*_*ic8 6 elixir phoenix-framework

Pheonix变化如此频繁,以至于我不确定我所做的是对的.

我正在尝试按照一些教程,所有这些教程在完成编译后立即执行'mix phoenix.start'命令,并且应该启动服务器.(在Github的问题页面上有一些讨论,他们将用mix phoenix.server命令替换它,你必须手动做一些事情,而不是真正遵循它.无论如何,这是在开发版本v0.8.0-我正在使用最新的稳定版本0.7.2)

我试图发出'mix phoenix.start'命令试图启动服务器
(AppName:PhoenixCrud)时出错:

> mix phoenix.start

=INFO REPORT==== 13-Dec-2014::15:23:08 ===
    application: logger
    exited: stopped
    type: temporary

=INFO REPORT==== 13-Dec-2014::15:23:08 ===
    application: cowboy
    exited: stopped
    type: temporary

=INFO REPORT==== 13-Dec-2014::15:23:08 ===
    application: cowlib
    exited: stopped
    type: temporary

=INFO REPORT==== 13-Dec-2014::15:23:08 ===
    application: ranch
    exited: stopped
    type: temporary
** (Mix) Could not start application phoenix_crud: PhoenixCrud.start(:normal, []) returned an error: shutdown: failed to start child: PhoenixCrud.Endpoint
    ** (EXIT) an exception was raised:
        ** (UndefinedFunctionError) undefined function: PhoenixCrud.Endpoint.start_link/0
            (phoenix_crud) PhoenixCrud.Endpoint.start_link()
            (stdlib) supervisor.erl:314: :supervisor.do_start_child/2
            (stdlib) supervisor.erl:297: :supervisor.start_children/3
            (stdlib) supervisor.erl:263: :supervisor.init_children/2
            (stdlib) gen_server.erl:306: :gen_server.init_it/6
            (stdlib) proc_lib.erl:237: :proc_lib.init_p_do_apply/3
Run Code Online (Sandbox Code Playgroud)

文档有更新的phoenix.server命令,但我也尝试了,并且混合说无法找到任务.

无论如何,看起来app_name/lib/app_name /endpoint.ex缺少一个start_link函数.我应该提供吗?我现在还不知道要放什么,因为我只是在试用Phoenix web框架并且对它没有任何了解(因此教程.)

所以,我应该提供start_link函数,如果是这样,有些人可以给我一些存根,现在尝试按照一些教程.否则是一个错误?

Jos*_*lim 5

这是凤凰版的东西.端点仅在master中可用,但似乎您没有使用master.您应该添加{:phoenix, github: "phoenixframework/phoenix"}到您的mix.exs或产生从0.7.2分支凤凰项目.


sea*_*ic8 2

我的 git 知识不是那么丰富,但这里是:

要使用0.7.2分支,您需要专门签出v0.7.2标签。所以我就是这样做的:

git clone https://github.com/phoenixframework/phoenix.git
cd phoenix
git checkout tags/v0.7.2
mix do deps.get, compile
mix phoenix.new app_name ../app_name
cd ../app_name
#change the mix deps to: (I think you can just use default hex deps as well)
{:phoenix, github: "phoenixframework/phoenix", tag: "v0.7.2"}
mix do deps.get, compile
mix phoenix.start
Run Code Online (Sandbox Code Playgroud)

否则,您通常 git clone 位于 master 分支上的 Phoenix 代码位于 0.8.0-dev 上,您需要将 deps 设置为 github master 分支(如 @JoseValim 所述)

{:phoenix, github: "phoenixframework/phoenix"} 
Run Code Online (Sandbox Code Playgroud)

这意味着,您现在需要使用 mix phoenix.server 命令。

希望对其他人有帮助。