繁体   English   中英

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

[英]How to fix "could not compile dependency :bcrypt_elixir" error on 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.

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

错误

这是我来自depsmix.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

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

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

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

平台:- ubuntu

$ sudo apt install make

$ sudo apt-get install build-essential

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

您似乎没有安装 NMake。

NMake 的文档

NMAKE 在您安装 Visual Studio 或 Visual C++ 命令行生成工具时包含在内。 它不能单独使用。

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

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

对于 Visual Studio 2019 (VS2019):

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

在 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 deps.compile 。

实际上仔细看看这个,因为你正在运行 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,则安装 virtual box 并在机器上放置一个 Linux VM,然后继续。

我发现在 Windows 上运行的是最新版本的 erlang OTP,版本 21,导致了问题。 我卸载了这个版本并使用了 20 版本(它安装了 erlang 9.3 和最新版本的 Elixir,然后在编译时查找这个版本)然后 bcrypt_elixir 编译

这个答案适用于直接在 Windows 上运行 elixir 并使用带有 ElixirLS 扩展的 VS Code 的任何人。 这些说明应该适用于 2022 以外的其他 Visual Studio 版本,只需将路径更改为 vcvars64.bat。

  1. 安装 Visual Studio 2022。
  2. 使用 Visual Studio 安装程序安装Desktop Development with C++ 这包含本机 C/C++ 构建工具,包括 nmake.exe。
  3. 使用以下内容在您的主目录 (C:\Users\UserName) ExVsCode.bat 中创建一个脚本( %1是您访问第一个命令行参数的方式,它将是项目目录):
cd %1
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat
code .
  1. 当您想在 VS Code 中处理 elixir 项目时,打开命令提示符 (CMD.exe),如果您不在主目录,则移至主目录,然后运行ExVsCode.bat C:\Users\Username\PathToProject以使用 ElixirLS 和集成终端可用的所有构建工具打开 VS Code。

其中一些归功于 exqlite 文档

注意:原始问题可能与Cygwin有关,但是很多人会直接在Windows上运行elixir找到这个答案,并且没有提到Cygwin或WSL的封闭问题已经指向这里。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM