Error compiling bcrypt - node.js

2019-01-13 06:31发布

问题:

I'm trying to install bycrpt via npm install using Windows 7 Ultimate x64. This is my install log:

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

I've already installed Python < v2.7 and .NET Framework SDK 2.0. I also downloaded a package called win7sdkx64.exe which was what i think the sdk for Visual Studio. I liked all of the dependencies in my Path as following:

%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

but i still get these errors. What can i try next? Install Visual Studio completly?

回答1:

Ditch the bcrypt module and use a native JavaScript library instead. bcrypt-nodejs requires no compilation and provides almost the same functionality as the compiled bcrypt.



回答2:

This is correct way to install bcrypt over npm on Windows 7/8 x64

Pre:

  • install Python http://www.python.org/download/releases/2.7.5/
  • Install Visual Studio 2012/13 Express (or other)
  • Install Windows SDK (for Windows 7 / 8)
  • Install Win64 OpenSSL v1.0.1g

Post:

Open "Developer Command Prompt for VS2012" as Administrator and test install:

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

p.s. My current Windows environment: win8 x64, node 0.10.x. All works nice.

UPDATE (2016): Note for Windows 10 x64

Visual Studio Express Desktop Edition solves node-gyp problem. Just install it and it will work for node-gyp.

Links:

  • Microsoft Visual Studio Express 2012 for Windows Desktop
  • Visual Studio Express 2015 Desktop Edition
  • Windows 8 SDK
  • SSL Download
  • node-gyp installation


回答3:

How I resolved this.

My enviroment: Windows 8.1 x64, Node v0.12.2, npm v2.7.5

Install all components:

  1. Install latest 2.x Python, download Python (I downloaded 2.7.9)
  2. Install Visual Studio 2012/13 Express (or other)
  3. Install Windows SDK (for Windows 7 / 8)
  4. Install Win64 OpenSSL v1.0.1g, download it from here (I loaded "Win64 OpenSSL v1.0.2a" latest)

After all components is installed [Important]:

Open "Developer Command Prompt for VS2012" as Administrator

[for VS 2012] Go to

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

[for VS 2013] Go to

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

Execute command "VsDevCmd.bat"

Then you can execute these cmd:

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

And for me it worked (I have trouble to launch, because from beginning I no execute command "VsDevCmd.bat").

Note:

  1. If it still not executes try to Execute command in simple Command prompt opened as Administrator
  2. Or if bcrypt is installing successfully and executing npm install in your project it fails. Check bcrypt version in package.json. In my case there was "bcrypt": "0.7.x" dependency was specified, and I have newer bcryot version, so after changind it to "bcrypt": "0.8.x", everything installed successfully.


回答4:

For anyone still facing errors installing bcrypt in 2017.

An npm module has been released to handle Window's native dependency issues by Felix Rieseberg and other contributors. .NET Framework 4.5.1 is the only requirement for Windows 7 / Vista.

With admin privileges, run:

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


回答5:

Looking at the error I see

c:\users\timd.node-gyp\0.8.18\deps\uv\include\ares.h(49): fatal error C1083: Cannot open include file: 'winsock2.h': No such file or directory

You'll need to fix that before you can move further. Presumably, you've either figured this out or moved on since it's been a month.

Take a look at winsock2.h, no such file or directory