编译bcrypt – node.js时出错

我试图通过npm install使用Windows 7旗舰版x64安装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 <v2.7和.NET Framework SDK 2.0。 我也下载了一个名为win7sdkx64.exe的包,这是我认为的Visual Studio SDK。 我喜欢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?

抛弃bcrypt模块,改用本地JavaScript库。 bcrypt-nodejs不需要编译,并提供与编译的bcrypt几乎相同的function。

这是在Windows 7/8 x64上通过npm安装bcrypt的正确方法

上一篇:

post:

以pipe理员身份打开“开发人员命令提示符VS2012”并进行testing安装:

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

PS我目前的Windows环境:win8 x64,节点0.10.x. 所有的作品不错。

更新(2016) :注意Windows 10 x64

Visual Studio Express 桌面版解决节点gyp问题。 只需安装它,它将适用于node-gyp。

链接:

  • 用于Windows桌面的Microsoft Visual Studio Express 2012
  • Visual Studio Express 2015桌面版
  • Windows 8 SDK
  • SSL下载
  • 节点gyp安装

我如何解决这个问题。

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

安装所有组件:

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

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

以pipe理员身份打开“开发人员命令提示符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. 如果仍然没有执行,请以pipe理员身份打开简单的命令提示符尝试执行命令
  2. 或者,如果bcrypt安装成功,并执行npm安装在您的项目失败。 检查package.json中的bcrypt版本。 在我的情况下,有“bcrypt”:指定了“0.7.x”依赖关系,并且我有更新的bcryot版本,所以在将其更改为“bcrypt”:“0.8.x”后,一切安装成功。

看看我看到的错误

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

在进一步移动之前,您需要解决这个问题。 据推测,你已经明白了这一点,或者从一个月前就开始了。

看看winsock2.h,没有这样的文件或目录

对于任何人在2017年仍然面临安装bcrypt的错误。

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

使用pipe理员权限,运行:

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