【问题标题】:Error compiling bcrypt - node.js编译 bcrypt 时出错 - node.js
【发布时间】:2021-01-11 19:17:14
【问题描述】:

我正在尝试使用 Windows 7 Ultimate x64 通过npm install 安装 bycrpt。 这是我的安装日志:

D:\Dropbox\Projekte\RZ\Finance-Man-GUI\node_modules\bcrypt>node "C:\Program File
s\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node
-gyp.js" rebuild
npm http GET https://registry.npmjs.org/mime/1.2.6
npm http 304 https://registry.npmjs.org/coffee-script
npm http 304 https://registry.npmjs.org/mkdirp
npm http 304 https://registry.npmjs.org/cssom
npm http 304 https://registry.npmjs.org/hooks/0.2.1
npm http 304 https://registry.npmjs.org/mongodb/1.2.8
npm http 304 https://registry.npmjs.org/ms/0.1.0
npm http 304 https://registry.npmjs.org/sliced/0.0.3
npm http 304 https://registry.npmjs.org/muri/0.1.0
npm http 304 https://registry.npmjs.org/mime/1.2.6
npm http GET https://registry.npmjs.org/crc/0.2.0
npm http GET https://registry.npmjs.org/pause/0.0.1
npm http GET https://registry.npmjs.org/bytes/0.1.0
npm http GET https://registry.npmjs.org/formidable/1.0.11
npm http GET https://registry.npmjs.org/qs/0.5.1
npm http GET https://registry.npmjs.org/bson/0.1.5
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(29
7,5): warning MSB8003: Could not find WindowsSDKDir variable from the registry.
  TargetFrameworkVersion or PlatformToolset may be set to an invalid version nu
mber. [D:\Dropbox\Projekte\RZ\Finance-Man-GUI\node_modules\bcrypt\build\bcrypt_
lib.vcxproj]
  blowfish.cc
  bcrypt.cc
  bcrypt_node.cc
..\src\bcrypt.cc(232): warning C4267: '=' : conversion from 'size_t' to 'unsign
ed char', possible loss of data [D:\Dropbox\Projekte\RZ\Finance-Man-GUI\node_mo
dules\bcrypt\build\bcrypt_lib.vcxproj]
c:\users\timd\.node-gyp\0.8.18\deps\uv\include\ares.h(49): fatal error C1083: C
annot open include file: 'winsock2.h': No such file or directory [D:\Dropbox\Pr
ojekte\RZ\Finance-Man-GUI\node_modules\bcrypt\build\bcrypt_lib.vcxproj]
gyp ERR! build error
gyp ERR! stack Error: `C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.e
xe` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\
npm\node_modules\node-gyp\lib\build.js:255:23)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:99:17)
gyp ERR! stack     at Process._handle.onexit (child_process.js:678:10)
gyp ERR! System Windows_NT 6.1.7600
gyp ERR! command "node" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modu
les\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd D:\Dropbox\Projekte\RZ\Finance-Man-GUI\node_modules\bcrypt
gyp ERR! node -v v0.8.18
gyp ERR! node-gyp -v v0.8.2
gyp ERR! not ok
npm ERR! bcrypt@0.7.3 install: `node-gyp rebuild`
npm ERR! `cmd "/c" "node-gyp rebuild"` failed with 1
npm ERR!
npm ERR! Failed at the bcrypt@0.7.3 install script.
npm ERR! This is most likely a problem with the bcrypt package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls bcrypt
npm ERR! There is likely additional logging output above.

npm ERR! System Windows_NT 6.1.7600
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! cwd D:\Dropbox\Projekte\RZ\Finance-Man-GUI
npm ERR! node -v v0.8.18
npm ERR! npm -v 1.2.2
npm ERR! code ELIFECYCLE
npm http 304 https://registry.npmjs.org/crc/0.2.0
npm http 304 https://registry.npmjs.org/qs/0.5.1
npm http 304 https://registry.npmjs.org/pause/0.0.1
npm http 304 https://registry.npmjs.org/bson/0.1.5
npm http 304 https://registry.npmjs.org/formidable/1.0.11
npm http 304 https://registry.npmjs.org/bytes/0.1.0

> bson@0.1.5 install D:\Dropbox\Projekte\RZ\Finance-Man-GUI\node_modules\mongoos
e\node_modules\mongodb\node_modules\bson
> node install.js || (exit 0)

================================================================================

=                                                                              =

=  Attempting to build bson c++ extension                                      =

=   Windows: no build will be attempted as binaries are prepackaged            =

=   Unix: on failure the package will still install without the C++ extension  =

=                                                                              =

================================================================================

npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     D:\Dropbox\Projekte\RZ\Finance-Man-GUI\npm-debug.log
npm ERR! not ok code 0

我已经安装了 Python Path 中的所有依赖项,如下所示:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\nodejs\;E:\Program Files\Java\jdk1.6.0_38\bin;C:\Program Files (x86)\Heroku\bin;C:\Program Files (x86)\ruby-1.9.2\bin;C:\Program Files (x86)\git\bin;C:\Program Files (x86)\git\cmd;E:\Program Files (x86)\Heroku\bin;C:\mongodb-win32-x86_64-2.2.2\bin;E:\xampp\mysql\bin;E:\xampp\apache\bin;E:\Python27;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\vcpackages;C:\Program Files\Microsoft Windows Performance Toolkit\;E:\Program Files (x86)\openssl-0.9.8k_X64\bin

但我仍然收到这些错误。 接下来我可以尝试什么?完整安装 Visual Studio?

【问题讨论】:

  • 最佳建议,确保您仔细阅读安装文档。具体来说,确保安装了 OpenSSL 和 Python2.7。这实际上是执行部分编译的 node-gyp 包的一部分。
  • 请您看看我在 Cannot find module 'bcrypt' 上的回答好吗?

标签: node.js npm bcrypt


【解决方案1】:

抛弃 bcrypt 模块,改用原生 JavaScript 库。 bcrypt-nodejs 不需要编译,提供与编译后的 bcrypt 几乎相同的功能。

【讨论】:

  • 这应该被选作答案,bcrypt-nodejs 包正在 windows 设置上工作
  • 感谢您。更改为 bcrypt-nodejs 使得部署到 Amazon Elastic Beanstalk 终于可以工作了。
  • 虽然性能要慢很多。 github.com/adrianblynch/bcrypt-vs-bcrypt
  • @AdrianLynch .. 以及在 Intel i7-3770 64 位 windows 机器上测试的比较结果。 bcrypt:267 毫秒,bcryptjs:334 毫秒,twin-bcrypt:752 毫秒,bcrypt-nodejs:688 毫秒。 Bcryptjs 似乎是一个不错的选择。
【解决方案2】:

这是在 Windows 7/8 x64

上通过 npm 安装 bcrypt 的正确方法

上一篇:

帖子:

以管理员身份打开“VS2012的开发者命令提示符”并测试安装:

npm install node-gyp -g
npm install bcrypt -g

附言我当前的 Windows 环境:win8 x64,节点 0.10.x。一切正常。

更新(2016 年):Windows 10 x64 的注意事项

Visual Studio Express Desktop Edition 解决了 node-gyp 问题。 只需安装它,它将适用于 node-gyp。

链接:

【讨论】:

  • 我同意,使用不同的包不是答案。我有 bcrypt 在 Windows 上工作,并拒绝使用 bcryptjs 或替代品。
  • 这是唯一有效的解决方案。经过 4 小时的搜索和测试
  • 我已经安装了 Visual Studio 2015。我已经安装了 Python 2.7.whatever,然后 npm install node-gyp -gnpm install bcrypt -g 顺利进行。我能够在我的项目中运行npm install。谢谢!
【解决方案3】:

我是如何解决这个问题的。

我的环境:Windows 8.1 x64,Node v0.12.2,npm v2.7.5

安装所有组件:

  1. 安装最新的 2.x Python,download Python(我下载的是 2.7.9)
  2. 安装 Visual Studio 2012/13 Express(或其他)
  3. 安装 Windows SDK(适用于 Windows 7 / 8)
  4. 安装Win64 OpenSSL v1.0.1g,从here下载(我最新加载了“Win64 OpenSSL v1.0.2a”)

安装所有组件后[重要]:

以管理员身份打开“VS2012 的开发者命令提示符”

[适用于 VS 2012] 去

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools

[适用于 VS 2013] 去

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools

执行命令“VsDevCmd.bat”

然后就可以执行这些cmd了:

npm install node-gyp -g
npm install bcrypt -g

对我来说它有效(我无法启动,因为从一开始我就没有执行命令“VsDevCmd.bat”)。

注意:

  1. 如果仍未执行,请尝试在以管理员身份打开的简单命令提示符中执行命令
  2. 或者,如果 bcrypt 安装成功并在您的项目中执行 npm install,它会失败。检查 package.json 中的 bcrypt 版本。在我的情况下,指定了 "bcrypt": "0.7.x" 依赖项,并且我有更新的 bcryot 版本,因此将其更改为 "bcrypt": "0.8.x" 后,一切都安装成功。

【讨论】:

  • 我在节点上安装了一个不同的库,这些步骤对我有用。
【解决方案4】:

对于在 2017 年安装 bcrypt 时仍然遇到错误的任何人。

Felix Rieseberg 和其他贡献者发布了一个 npm 模块来处理 Window 的本机依赖问题。 .NET Framework 4.5.1 是 Windows 7 / Vista 的唯一要求。

使用管理员权限,运行:

npm install --g --production windows-build-tools
npm install bcrypt

【讨论】:

    【解决方案5】:

    查看我看到的错误

    c:\users\timd.node-gyp\0.8.18\deps\uv\include\ares.h(49): 致命错误 C1083: 无法打开包含文件: 'winsock2.h': 没有这样的文件或目录

    您需要先解决这个问题,然后才能继续前进。大概,你已经弄清楚了这一点,或者在一个月后继续前进。

    看看winsock2.h, no such file or directory

    【讨论】:

    • 链接的问题建议安装 Windows 7 SDK。提问者和我自己(来自 Google)都安装了 Windows 7 SDK,但错误仍然存​​在。您还有其他想法吗?
    • 我的 Windows 8 上也安装了 Windows 8/8.1 SDK,但仍然出现错误...
    【解决方案6】:

    目前,只需使用 bcryptjs 库,它是最新的并且在 Windows 10 上编译得很好。

    【讨论】:

      猜你喜欢
      • 2014-07-15
      • 2019-10-12
      • 1970-01-01
      • 2018-07-04
      • 1970-01-01
      • 2014-09-29
      • 2011-12-04
      • 2013-12-30
      相关资源
      最近更新 更多