如何修复Windows上的“无法编译依赖项:bcrypt_elixir”错误?

Wil*_*iam 5 cygwin elixir-mix elixir elixir-framework phoenix-framework

我在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.
Run Code Online (Sandbox Code Playgroud)

这是错误的终端屏幕截图:

错误

这是我的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
Run Code Online (Sandbox Code Playgroud)

Shr*_*ash 7

我在使用 Elixir 项目进行酿酒厂设置时遇到了同样的问题。

安装包解决问题,如下所示。

我发现 bcrypt_elixir 需要从 Elixir 论坛安装 make 和 build-essential。

平台:- ubuntu

$ sudo apt install make

$ sudo apt-get install build-essential

  • 这个问题是在Windows上的,所以这个答案完全断章取义。 (2认同)
  • @LowFieldTheory先生,当用户遇到这个问题时,他们会得到这样的声明“无法编译依赖项:bcrypt_elixir”,人们只需输入谷歌即可获得解决方案。这个问题在 Google SEO 中首先出现。假设任何 Linux 用户遇到这个问题,他/她将访问这个问题网页,他们会得到他们的解决方案,所以我把。这就是堆栈溢出通过人们的答案来帮助人们的美妙之处。剩下的事情我就留给你理解了。 (2认同)
  • @ShreePrakash 我确实在 Ubuntu 上遇到了这个问题,因为我没有安装 build-essentials,所以谢谢你! (2认同)

Low*_*ory 6

对于 Visual Studio 2019 (VS2019):

cmd /K "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
Run Code Online (Sandbox Code Playgroud)


Ron*_*eau 4

bcrypt_elixir 使用 Windows 的 NMake(参见 bcrypt_elixir's Makefile.win)。

看来你没有安装 NMake。

来自NMake 的文档

当您安装 Visual Studio 或 Visual C++ 命令行构建工具时,NMAKE 已包含在内。它不能单独使用。

因此,您需要下载 Visual Studio才能获取 NMake。然后你应该能够编译bcrypt_elixir。

如果您已经有 NMake,请确保nmake.exe位于您的路径中的某个目录下。