Как исправить ошибку could not compile dependency: bcrypt_elixir в Windows?

Я работаю в Windows и пытаюсь установить модуль bcrypt_elixir.

Я получаю следующую ошибку:

$ mix phx.server
==> bcrypt_elixir
could not compile dependency :bcrypt_elixir, "mix compile" failed. You can recompile this dependency with "mix deps.compile bcrypt_elixir", update it with "mix deps.update bcrypt_elixir" or clean it with "mix deps.clean bcrypt_elixir"
** (Mix) "nmake" not found in the path. If you have set the MAKE environment variable,
please make sure it is correct.

Вот скриншот ошибки терминала:

Ошибка

Вот моя deps функция от mix.exs:

defp deps do
    [
      {:phoenix, "~> 1.3.0"},
      {:phoenix_pubsub, "~> 1.0"},
      {:phoenix_ecto, "~> 3.2"},
      {:postgrex, ">= 0.0.0"},
      {:phoenix_html, "~> 2.10"},
      {:phoenix_live_reload, "~> 1.0", only: :dev},
      {:gettext, "~> 0.11"},
      {:cowboy, "~> 1.0"},
      {:comeonin, "~> 4.0"},
      {:elixir_make, "~> 0.4.1"},
      {:bcrypt_elixir, "~> 1.0"}
    ]
  end

person William    schedule 24.03.2018    source источник


Ответы (6)


Я столкнулся с той же проблемой во время настройки завода по производству эликсира.

Установка пакета решает проблему, как показано ниже.

Я обнаружил, что bcrypt_elixir необходимо установить make и build-essential с форума Elixir.

платформа: - ubuntu

$ sudo apt install make

$ sudo apt-get install build-essential

person Shree Prakash    schedule 24.01.2019
comment
эта проблема связана с Windows, поэтому этот ответ полностью вне контекста. - person LowFieldTheory; 10.11.2019
comment
@LowFieldTheory Сэр, когда пользователь получает эту проблему, он получает этот оператор, который не может скомпилировать зависимость: bcrypt_elixir, и люди просто вставляют в Google, чтобы получить решение. Этот вопрос будет первым в Google SEO. Предположим, у любого пользователя Linux возникла эта проблема, и он / она зайдут на веб-страницу с этой проблемой, и они получат свое решение, поэтому я поставил. В этом прелесть переполнения стека, чтобы помочь людям своими ответами. Остальные вещи оставляю на ваше усмотрение. - person Shree Prakash; 10.11.2019
comment
в любом случае будет сложно иметь эту проблему на ubuntu. - person LowFieldTheory; 11.11.2019
comment
@LowFieldTheory Я столкнулся с этой проблемой, когда создавал двоичный файл с помощью винокурни. в случае, если вы хотите, я могу воспроизвести. - person Shree Prakash; 11.11.2019
comment
Вы столкнулись с этой ошибкой, потому что не читали документацию по установке на github: github.com/riverrun/bcrypt_elixir там, где четко сказано, что вам нужен компилятор C, я имею в виду, что никто не требует, чтобы вы читали всю документацию, но, по крайней мере, следует знать, как установить. - person LowFieldTheory; 11.11.2019
comment
@LowFieldTheory Пожалуйста, обратите внимание на то, что вы не проголосовали за этот ответ, потому что он был дан для платформы Ubuntu, а не из-за установки. Итак, позвольте мне сказать вам, что существует так много вопросов, которые задаются / задавались для RPM, но люди ответили и на Debian. - person Shree Prakash; 12.11.2019
comment
@ShreePrakash Я столкнулся с этой проблемой на Ubuntu, потому что я не установил необходимые компоненты для сборки, так что спасибо! - person Benoit; 14.05.2020

bcrypt_elixir использует NMake Windows (см. Makefile.win < / а>).

Похоже, у вас не установлен NMake.

Из документации NMake:

NMAKE включается при установке Visual Studio или средств сборки из командной строки Visual C ++. Он не продается отдельно.

Поэтому вам нужно загрузить Visual Studio, чтобы получить NMake. Тогда вы сможете скомпилировать bcrypt_elixir.

Если у вас уже есть NMake, убедитесь, что nmake.exe находится в каталоге из вашего путь.

person Ronan Boiteau    schedule 25.03.2018
comment
Я загрузил и установил визуальную студию, и это не устранило проблему. Я искал файл с именем nmake.exe, но ничего не нашел. - person William; 25.03.2018
comment
Также взгляните на эту страницу - это для ComeOnIn, но описанные им шаги применимы здесь тоже. - person Onorio Catenacci; 26.03.2018
comment
Присмотритесь чуть внимательнее @ RonanBoiteau - он управляет Cygwin. Nmake даже не входит в это. - person Onorio Catenacci; 27.03.2018

Для Visual Studio 2019 (VS2019):

cmd /K "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
person LowFieldTheory    schedule 10.11.2019

В Windows 10 вы должны добавить NMAKE в свой путь  введите описание изображения здесь

После этого вы можете запускать mix deps.compile, пока не увидите следующее сообщение:  введите описание изображения здесь

После этого вы должны запустить cmd в соответствии с рекомендациями nmake:

cmd /K "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64

Запустите эту команду на cmd и выполните mix deps.compile в обычном режиме.

person Nguyen Tan Hung    schedule 27.03.2020

На самом деле, если посмотреть на это немного внимательнее, поскольку вы запускаете Cygwin и пытаетесь создать bcrypt под Cygwin, nmake даже не входит в вопрос. Вам необходимо установить make в Cygwin. Повторно запустите установщик cygwin, выберите категорию Devel и затем в разделе Devel найдите make.

РЕДАКТИРОВАТЬ:

Хорошо, так что если бы мне пришлось угадывать, я бы сказал, что тебе нужно

a.) Прекратите пытаться построить все в соответствии с подсказкой Cygwin - если bcrypt_elixir обнаруживает, что он находится в Windows, он будет искать nmake, а nmake не является частью Cygwin.

Вы не указали, как вы ищете nmake, но на вашем месте я бы попробовал это из каталога C:\Program Files (x86).

dir /s nmake.exe

Имейте в виду, что вы запускаете это из командной строки Windows - это не будет работать из оболочки Cygwin!

б.) Каким-то образом настроить bcrypt_elixir так, чтобы он думал, что он находится в Linux, поэтому он ищет make (что не то же самое, что и nmake).

В принципе, я думаю, что самым простым ответом было бы попытаться запустить mix phx.server из обычной командной строки Windows, а затем перейти оттуда. Или, если вам нужен Linux, установите виртуальный ящик, поместите виртуальную машину Linux на машину и продолжайте.

person Onorio Catenacci    schedule 26.03.2018

Я обнаружил, что при работе в Windows проблема была вызвана последней версией erlang OTP версии 21. Я удалил эту версию и выбрал версию 20 (которая устанавливает erlang 9.3 и последнюю версию Elixir, а затем ищет эту версию при компиляции), а затем bcrypt_elixir скомпилирован al

person luzaranza    schedule 29.07.2018