Phoenix 开始抛出 (UndefinedFunctionError) function :crypto.rand_bytes/1 is undefined or private
Phoenix started throwing (UndefinedFunctionError) function :crypto.rand_bytes/1 is undefined or private
更新我的系统后 - MAC,我的 phoenix 应用程序编译得很好,但每当我访问任何路由时都会抛出此错误。
Server: localhost:4000 (http) Request: GET /
** (exit) an exception was raised:
** (UndefinedFunctionError) function :crypto.rand_bytes/1 is undefined or private. Did you mean one of:
* rand_seed/0
* rand_seed/1
(crypto) :crypto.rand_bytes(20)
(plug) lib/plug/request_id.ex:59: Plug.RequestId.generate_request_id/0
(plug) lib/plug/request_id.ex:48: Plug.RequestId.get_request_id/2
(plug) lib/plug/request_id.ex:42: Plug.RequestId.call/2
(olars) lib/olars/endpoint.ex:1: Olars.Endpoint.phoenix_pipeline/1
(olars) lib/plug/debugger.ex:93: Olars.Endpoint."call (overridable 3)"/2
(olars) lib/olars/endpoint.ex:1: Olars.Endpoint.call/2
(plug) lib/plug/adapters/cowboy/handler.ex:15: Plug.Adapters.Cowboy.Handler.upgrade/4
(cowboy) src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4
我的mix.exs
{:phoenix, "~> 1.2.0"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.0"},
{:phoenix_haml, github: "chrismccord/phoenix_haml"},
{:mariaex, ">= 0.0.0"},
{:phoenix_html, "~> 2.6"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:gettext, "~> 0.11"},
{:cowboy, "~> 1.0"},
{:arc, "~> 0.5.2"},
{:arc_ecto, "~> 0.3.2"},
{:ex_aws, "~> 0.4.10"},
{:httpoison, "~> 0.9"},
{:poison, "~> 2.0"},
{:ecto, "~> 2.0.2", override: true},
{:plug_auth, github: "smpallen99/plug_auth"},
{:comeonin, "~> 2.1.0"},
{:phoenix_calendar, "~> 0.1.2"},
{:httpotion, "~> 3.0.0", override: true},
{:timex, "~> 3.0"},
{:quantum,github: "c-rack/quantum-elixir"},
{:calendar, "~> 0.16.1"},
{:uri_query, "~> 0.1.1"},
{:scrivener, "~> 2.0"},
{:scrivener_list, "~> 1.0"},
{:number, "~> 0.5.0"},
{:xlsxir, "~> 1.4.1"},
{:new_relic, "~> 0.1.1"},
{:retry, "~> 0.7"},
{:credo, "~> 0.8", only: [:dev, :test], runtime: false}
Elixr 版本:Elixir 1.4.5
二郎版本:20
如果你们需要任何其他信息,请告诉我。
:crypto.rand_bytes/1
改为 removed in OTP 20. You should use :crypto.strong_rand_bytes/1。
在这种情况下,您似乎需要更新插件才能拥有 this commit。您可以 运行 mix deps.update plug
执行此操作。
如@mudasobwa 评论中所述
put an explicit {:plug, "~> 1.3"}
in your mix.ex
file.
已解决此问题。
感谢所有试图提供帮助的人。
更新我的系统后 - MAC,我的 phoenix 应用程序编译得很好,但每当我访问任何路由时都会抛出此错误。
Server: localhost:4000 (http) Request: GET / ** (exit) an exception was raised: ** (UndefinedFunctionError) function :crypto.rand_bytes/1 is undefined or private. Did you mean one of:
* rand_seed/0 * rand_seed/1 (crypto) :crypto.rand_bytes(20) (plug) lib/plug/request_id.ex:59: Plug.RequestId.generate_request_id/0 (plug) lib/plug/request_id.ex:48: Plug.RequestId.get_request_id/2 (plug) lib/plug/request_id.ex:42: Plug.RequestId.call/2 (olars) lib/olars/endpoint.ex:1: Olars.Endpoint.phoenix_pipeline/1 (olars) lib/plug/debugger.ex:93: Olars.Endpoint."call (overridable 3)"/2 (olars) lib/olars/endpoint.ex:1: Olars.Endpoint.call/2 (plug) lib/plug/adapters/cowboy/handler.ex:15: Plug.Adapters.Cowboy.Handler.upgrade/4 (cowboy) src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4
我的mix.exs
{:phoenix, "~> 1.2.0"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.0"},
{:phoenix_haml, github: "chrismccord/phoenix_haml"},
{:mariaex, ">= 0.0.0"},
{:phoenix_html, "~> 2.6"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:gettext, "~> 0.11"},
{:cowboy, "~> 1.0"},
{:arc, "~> 0.5.2"},
{:arc_ecto, "~> 0.3.2"},
{:ex_aws, "~> 0.4.10"},
{:httpoison, "~> 0.9"},
{:poison, "~> 2.0"},
{:ecto, "~> 2.0.2", override: true},
{:plug_auth, github: "smpallen99/plug_auth"},
{:comeonin, "~> 2.1.0"},
{:phoenix_calendar, "~> 0.1.2"},
{:httpotion, "~> 3.0.0", override: true},
{:timex, "~> 3.0"},
{:quantum,github: "c-rack/quantum-elixir"},
{:calendar, "~> 0.16.1"},
{:uri_query, "~> 0.1.1"},
{:scrivener, "~> 2.0"},
{:scrivener_list, "~> 1.0"},
{:number, "~> 0.5.0"},
{:xlsxir, "~> 1.4.1"},
{:new_relic, "~> 0.1.1"},
{:retry, "~> 0.7"},
{:credo, "~> 0.8", only: [:dev, :test], runtime: false}
Elixr 版本:Elixir 1.4.5 二郎版本:20
如果你们需要任何其他信息,请告诉我。
:crypto.rand_bytes/1
改为 removed in OTP 20. You should use :crypto.strong_rand_bytes/1。
在这种情况下,您似乎需要更新插件才能拥有 this commit。您可以 运行 mix deps.update plug
执行此操作。
如@mudasobwa 评论中所述
put an explicit
{:plug, "~> 1.3"}
in yourmix.ex
file.
已解决此问题。
感谢所有试图提供帮助的人。