2017-07-05 2 views
4

Après et mise à jour de mon système - MAC, mon application phoenix compiler très bien, mais lancez cette erreur chaque fois que je frappe un itinéraire.Phoenix a commencé à lancer (UndefinedFunctionError) fonction: crypto.rand_bytes/1 est indéfini ou privé

Serveur: localhost: 4000 (http) Demande: GET/ ** (sortie) une exception a été soulevée: ** (UndefinedFunctionError) Fonction: crypto.rand_bytes/1 est indéfini ou privé. Vouliez-vous dire l'un des:

* 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 

Mes 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} 

Version ELIXR: Elixir 1.4.5 Erlang Version: 20

Laissez-moi savoir si vous avez besoin d'autres informations.

Répondre

6

Comme mentionné dans les commentaires par @mudasobwa

mettre un {:plug, "~> 1.3"} explicite dans votre fichier mix.ex.

Résolution de ce problème.

Merci à tous ceux qui ont essayé d'aider.

3

:crypto.rand_bytes/1 était removed in OTP 20. Vous devriez utiliser :crypto.strong_rand_bytes/1 à la place.

Dans ce cas, il semble que vous ayez besoin de mettre à jour le connecteur pour avoir this commit. Vous pouvez exécuter mix deps.update plug pour ce faire.

+0

Déjà fait sans aucun succès ... ma version plug 'plug 1.1.9', on dirait qu'elle est verrouillée sur cette version, mais comme sur mon mix.ex, je ne l'ai pas verrouillé sur n'importe quelle version. – Renews

+1

@Renews met un explicite '{: plug," ~> 1.3 "}' dans votre fichier 'mix.ex'. – mudasobwa

+0

@mudasobwa merci, cela a fait son travail, utilisera votre commentaire en réponse à ce problème. – Renews