如何修复 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 权限被拒绝,请重试错误”