7

Pheonix 变化如此频繁,以至于我不确定我所做的是否正确。

我正在尝试遵循一些教程,并且在您完成编译后,它们都具有“mix phoenix.start”命令,并且应该启动服务器。(在 Github 的问题页面上有一些讨论,他们将用 mix phoenix.server 命令替换它,您必须手动执行某些操作,而不是真正遵循它。无论如何,这是在开发版本 v0.8.0- dev. 我正在使用最新的稳定版本 0.7.2)

我在尝试发出“mix phoenix.start”命令尝试启动服务器时遇到错误
(应用程序名称: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

文档有更新的 phoenix.server 命令,但我也尝试过,并且该组合表示找不到任务。

无论如何,app_name /lib/ app_name /endpoint.ex 似乎缺少 start_link 函数。我应该提供那个吗?我现在不知道该放什么,因为我只是在试用 Phoenix Web 框架并且对它一无所知(因此有教程。)

那么,我是否应该提供 start_link 功能,如果是这样,可以给我一些暂时存根以尝试遵循一些教程。否则是bug吗?

4

3 回答 3

5

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

于 2014-12-14T07:54:31.123 回答
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

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

{:phoenix, github: "phoenixframework/phoenix"} 

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

希望对其他人有所帮助。

于 2014-12-15T15:18:12.570 回答
0

似乎您的服务器已经启动。你只需要杀死它并使用命令killall beam.smp重新启动

于 2016-03-08T10:54:16.997 回答