まず、私はWindows 10で開発しています。それぞれのコンパイルの前にvcvarsall.bat amd64
を実行します。私が使用しています:エリクサー/フェニックス新しいプロジェクトComeonin.Bcryptは利用できません
エリクサー1.4.2
フェニックスV1.2.1
私は、ブランドの新しいプロジェクトを開始したユーザーテーブルを作って、すべてが正常に働いていました。私はpwをハッシュするためにcomeoninを追加し、私はもはやユーザーを作成することができません。
Mix.exs
# mix.exs
...
def application do
[mod: {PollarAppV2, []},
applications: [:phoenix, :phoenix_pubsub, :phoenix_html, :cowboy, :logger, :gettext,
:phoenix_ecto, :postgrex, :comeonin, :timex]]
end
...
defp deps do
[{:phoenix, "~> 1.2.1"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.0"},
{:postgrex, ">= 0.0.0"},
{:phoenix_html, "~> 2.6"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:gettext, "~> 0.11"},
{:cowboy, "~> 1.0"},
{:comeonin, "~> 3.0"},
{:timex, "~> 3.0"}]
end
...
User.ex
:function Comeonin.Bcrypt.hashpwsalt/1 is undefined (module Comeonin.Bcrypt is not available)
ここでは、関連するファイルからのコードです:私は、エラーページの格言を得ます 私はmix deps.clean --all
実行した
[warn] The on_load function for module Elixir.Comeonin.Bcrypt returned { :error,
{:load_failed,
'Failed to load NIF library c:/code/phoenix/pollar_app_v2/_build/dev/lib/comeonin/priv/bcrypt_nif: \'Unspecified error\''}}
[info] Sent 500 in 16ms
[error] #PID<0.430.0> running PollarAppV2.Endpoint terminated
Server: localhost:4000 (http)
Request: POST /users
** (exit) an exception was raised:
** (UndefinedFunctionError) function Comeonin.Bcrypt.hashpwsalt/1 is
undefined (module Comeonin.Bcrypt is not available)
(comeonin) Comeonin.Bcrypt.hashpwsalt("asdfasdf")
(pollar_app_v2) web/models/user.ex:40: PollarAppV2.User.generate_password_hash/1
(pollar_app_v2) web/controllers/user_controller.ex:17: PollarAppV2.UserController.create/2
(pollar_app_v2) web/controllers/user_controller.ex:1: PollarAppV2.UserController.action/2
(pollar_app_v2) web/controllers/user_controller.ex:1: PollarAppV2.UserController.phoenix_controller_pipeline/2
(pollar_app_v2) lib/pollar_app_v2/endpoint.ex:1: PollarAppV2.Endpoint.instrument/4
(pollar_app_v2) lib/phoenix/router.ex:261: PollarAppV2.Router.dispatch/2
(pollar_app_v2) web/router.ex:1: PollarAppV2.Router.do_call/2
(pollar_app_v2) lib/pollar_app_v2/endpoint.ex:1: PollarAppV2.Endpoint.phoenix_pipeline/1
(pollar_app_v2) lib/plug/debugger.ex:123: PollarAppV2.Endpoint."call
(overridable 3)"/2
(pollar_app_v2) lib/pollar_app_v2/endpoint.ex:1: PollarAppV2.Endpoint.call/2
(plug) lib/plug/adapters/cowboy/handler.ex:15: Plug.Adapters.Cowboy.Handler.upgrade/4
(cowboy)
c:/code/phoenix/pollar_app_v2/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4
コンソール、mix deps.update --all
、mix deps.compile
、mix compile
、など:私はgenerate_password_hash起動するユーザーを、保存しようとすると
は、私はこのエラーを取得しますすべて複数回。これは、nifファイルがコンパイルされていないことを示すものではなく、ファイル構造内の正しい場所にファイルを表示できますが、アプリケーション内でBcryptにアクセスすることはできません。どのようにこれを修正するための任意のアイデア?
「ミックスクリーン」(または「_ビルド」を手動で削除)してみましたか? – Dogbert
はい、私はこれらの両方を何度もやっています。私はちょうど動作するものを見つけることができないようです。 – smkarber
Comeoninのどのバージョン? –