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

Posted

技术标签:

【中文标题】如何修复 Windows 上的“无法编译依赖项:bcrypt_elixir”错误?【英文标题】:How to fix "could not compile dependency :bcrypt_elixir" error on Windows? 【发布时间】:2018-09-03 09:38:38 【问题描述】:

我在 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.

这是错误的终端截图:

这是来自mix.exs 的我的deps 函数:

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

【问题讨论】:

【参考方案1】:

在我的 elixir 项目中,我在酿酒厂设置过程中遇到了同样的问题。

安装包解决问题如下图。

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

平台:- ubuntu

$ sudo apt install make

$ sudo apt-get install build-essential

【讨论】:

这个问题在windows上,所以这个答案完全断章取义。 @LowFieldTheory 先生,当用户遇到此问题时,他们会收到“无法编译依赖项:bcrypt_elixir”的声明,人们只需输入谷歌即可获得解决方案。这个问题首先出现在 Google SEO 中。假设任何 Linux 用户遇到了这个问题,并且他/她会访问这个问题网页,他们会得到他们的解决方案,所以我放了。这就是堆栈溢出以人们的答案来帮助人们的美妙之处。剩下的事情我留给你理解。 无论如何在ubuntu上都很难出现这个问题。 @LowFieldTheory 我在酒厂的帮助下构建二进制文件时遇到了这个问题。如果你愿意,我可以重新制作。 @ShreePrakash 我确实在 Ubuntu 上遇到了这个问题,因为我没有安装 build-essentials,所以谢谢!【参考方案2】:

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

您似乎没有安装 NMake。

来自NMake's documentation

安装 Visual Studio 或 Visual C++ 命令行构建工具时会包含 NMAKE。它不单独提供。

所以您需要download Visual Studio 才能获得 NMake。然后你应该可以编译bcrypt_elixir了。

如果您已经拥有 NMake,请确保 nmake.exe 位于您的 path 的目录下。

【讨论】:

我下载并安装了 Visual Studio 并没有解决问题。我搜索了一个名为 nmake.exe 的文件,但什么也没找到。 也看看this page——它是为 ComeOnIn 准备的,但他概述的步骤也适用于此。 再靠近一点@RonanBoiteau——他正在运行 Cygwin。 Nmake 甚至没有进入它。【参考方案3】:

对于 Visual Studio 2019 (VS2019):

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

【讨论】:

【参考方案4】:

在 Windows 10 中,您必须将 NMAKE 添加到您的路径

之后,您可以运行 mix deps.compile 直到看到如下消息:

之后,您必须按照 nmake 的建议运行 cmd:

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

在 cmd 上运行此命令并正常运行mix deps.compile

【讨论】:

【参考方案5】:

实际上看这个更近一点,因为您正在运行 Cygwin 并尝试在 Cygwin 下构建 bcrypt,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 cmd 提示符下运行它——它不能在 Cygwin shell 中运行!

b.) 以某种方式将 bcrypt_elixir 设置为认为它在 Linux 上,因此它会查找 make(这与 nmake 不同)。

基本上,我认为最简单的答案是尝试从普通的 Windows cmd 提示符运行 mix phx.server,然后从那里开始。或者,如果您需要 Linux,则安装虚拟机并将 Linux 虚拟机放在机器上,然后继续。

【讨论】:

【参考方案6】:

我发现,在 Windows 上运行,它是 erlang OTP 的最新版本,版本 21, 那是造成问题的原因。我卸载了这个版本并选择了版本 20(它安装了 erlang 9.3 和最新版本的 Elixir,然后在编译时查找这个版本),然后 bcrypt_elixir 编译了 al

【讨论】:

以上是关于如何修复 Windows 上的“无法编译依赖项:bcrypt_elixir”错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 Windows 上的 Qt 控制台输出(使用 `qInstallMsgHandler` 和 `qDebug`)?

Windows 上的 MySQL 安装 - 以及如何修复丢失的 mysql.user?

如何在 Windows 上的 git 配置中修复“ssh 权限被拒绝,请重试错误”

rpc服务器不可用 如何修复Windows上的RPC服务器不可用错误

如何修复WINDOWS系统漏洞?

修复 Windows 7 上的 DirectX 7 延迟?