2015-03-28 11 views
35

Ich kann bcrypt mit npm nicht auf meinem Computer installieren, da die folgenden Fehler auftreten. Ich habe das Problem ohne viel Glück behoben. Können Sie irgendwelche Schritte zur Diagnose oder Behebung des Problems empfehlen, damit ich npm install bcrypt erfolgreich ausführen kann?Fehler bei der Installation von bcrypt mit npm

Someones-Macbook:node_modules Cody$ npm install bcrypt 
npm WARN package.json [email protected] No README data 
| 
> [email protected] install /Applications/MAMP/htdocs/richintime/ultimate-seed/node_modules/bcrypt 
> node-gyp rebuild 

child_process: customFds option is deprecated, use stdio instead. 
    CXX(target) Release/obj.target/bcrypt_lib/src/blowfish.o 
    CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt.o 
    CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt_node.o 
../src/bcrypt_node.cc:118:18: error: no member named 'Dispose' in 'v8::Persistent<v8::Function, v8::NonCopyablePersistentTraits<v8::Function> 
     >' 
     callback.Dispose(); 
     ~~~~~~~~^
../src/bcrypt_node.cc:202:19: error: unknown type name 'uv_work_t' 
void GenSaltAsync(uv_work_t* req) { 
       ^
../src/bcrypt_node.cc:219:24: error: unknown type name 'uv_work_t' 
void GenSaltAsyncAfter(uv_work_t* req) { 
        ^
../src/bcrypt_node.cc:220:17: error: calling a protected constructor of class 'v8::HandleScope' 
    HandleScope scope; 
       ^
/Users/Cody/.node-gyp/0.12.0/deps/v8/include/v8.h:816:13: note: declared protected here 
    V8_INLINE HandleScope() {} 
      ^
../src/bcrypt_node.cc:228:44: error: no member named 'New' in 'v8::String' 
     argv[0] = Exception::Error(String::New(baton->error.c_str())); 
            ~~~~~~~~^ 
../src/bcrypt_node.cc:229:19: error: no matching function for call to 'Undefined' 
     argv[1] = Undefined(); 
        ^~~~~~~~~ 
/Users/Cody/.node-gyp/0.12.0/deps/v8/include/v8.h:305:28: note: candidate function not viable: requires single argument 'isolate', but no 
     arguments were provided 
    friend Handle<Primitive> Undefined(Isolate* isolate); 
         ^
../src/bcrypt_node.cc:232:19: error: no matching function for call to 'Undefined' 
     argv[0] = Undefined(); 
        ^~~~~~~~~ 
/Users/Cody/.node-gyp/0.12.0/deps/v8/include/v8.h:305:28: note: candidate function not viable: requires single argument 'isolate', but no 
     arguments were provided 
    friend Handle<Primitive> Undefined(Isolate* isolate); 
         ^
../src/bcrypt_node.cc:238:20: error: member reference type 'v8::Persistent<v8::Function>' is not a pointer; maybe you meant to use '.'? 
    baton->callback->Call(Context::GetCurrent()->Global(), 2, argv); 
    ~~~~~~~~~~~~~~~^~ 
        . 
../src/bcrypt_node.cc:238:22: error: no member named 'Call' in 'v8::Persistent<v8::Function, v8::NonCopyablePersistentTraits<v8::Function> >' 
    baton->callback->Call(Context::GetCurrent()->Global(), 2, argv); 
    ~~~~~~~~~~~~~~~^
../src/bcrypt_node.cc:238:36: error: no member named 'GetCurrent' in 'v8::Context' 
    baton->callback->Call(Context::GetCurrent()->Global(), 2, argv); 
          ~~~~~~~~~^ 
../src/bcrypt_node.cc:246:34: error: unknown type name 'Arguments'; did you mean 'v8::internal::Arguments'? 
Handle<Value> GenerateSalt(const Arguments &args) { 
           ^~~~~~~~~ 
           v8::internal::Arguments 
/Users/Cody/.node-gyp/0.12.0/deps/v8/include/v8.h:127:7: note: 'v8::internal::Arguments' declared here 
class Arguments; 
    ^
../src/bcrypt_node.cc:247:17: error: calling a protected constructor of class 'v8::HandleScope' 
    HandleScope scope; 
       ^
/Users/Cody/.node-gyp/0.12.0/deps/v8/include/v8.h:816:13: note: declared protected here 
    V8_INLINE HandleScope() {} 
      ^
../src/bcrypt_node.cc:249:32: error: type 'const v8::internal::Arguments' does not provide a subscript operator 
    const ssize_t rounds = args[0]->Int32Value(); 
          ~~~~^~ 
../src/bcrypt_node.cc:250:30: error: type 'const v8::internal::Arguments' does not provide a subscript operator 
    const int rand_len = args[1]->Int32Value(); 
         ~~~~^~ 
../src/bcrypt_node.cc:251:58: error: type 'const v8::internal::Arguments' does not provide a subscript operator 
    Local<Function> callback = Local<Function>::Cast(args[2]); 
                ~~~~^~ 
../src/bcrypt_node.cc:255:45: error: 'New' is a private member of 'v8::PersistentBase<v8::Function>' 
    baton->callback = Persistent<Function>::New(callback); 
              ^
/Users/Cody/.node-gyp/0.12.0/deps/v8/include/v8.h:572:23: note: declared private here 
    V8_INLINE static T* New(Isolate* isolate, T* that); 
        ^
../src/bcrypt_node.cc:255:57: error: too few arguments to function call, expected 2, have 1 
    baton->callback = Persistent<Function>::New(callback); 
         ~~~~~~~~~~~~~~~~~~~~~~~~~  ^
/Users/Cody/.node-gyp/0.12.0/deps/v8/include/v8.h:572:3: note: 'New' declared here 
    V8_INLINE static T* New(Isolate* isolate, T* that); 
^
/Users/Cody/.node-gyp/0.12.0/deps/v8/include/v8config.h:289:20: note: expanded from macro 'V8_INLINE' 
# define V8_INLINE inline __attribute__((always_inline)) 
       ^
../src/bcrypt_node.cc:259:5: error: unknown type name 'uv_work_t' 
    uv_work_t* req = new uv_work_t; 
    ^
../src/bcrypt_node.cc:259:26: error: unknown type name 'uv_work_t' 
    uv_work_t* req = new uv_work_t; 
         ^
fatal error: too many errors emitted, stopping now [-ferror-limit=] 
20 errors generated. 
make: *** [Release/obj.target/bcrypt_lib/src/bcrypt_node.o] Error 1 
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2 
gyp ERR! stack  at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23) 
gyp ERR! stack  at ChildProcess.emit (events.js:110:17) 
gyp ERR! stack  at Process.ChildProcess._handle.onexit (child_process.js:1067:12) 
gyp ERR! System Darwin 13.4.0 
gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" 
gyp ERR! cwd /Applications/MAMP/htdocs/richintime/ultimate-seed/node_modules/bcrypt 
gyp ERR! node -v v0.12.0 
gyp ERR! node-gyp -v v1.0.2 
gyp ERR! not ok 
npm ERR! Darwin 13.4.0 
npm ERR! argv "node" "/usr/local/bin/npm" "install" "bcrypt" 
npm ERR! node v0.12.0 
npm ERR! npm v2.7.1 
npm ERR! code ELIFECYCLE 

npm ERR! [email protected] install: `node-gyp rebuild` 
npm ERR! Exit status 1 
npm ERR! 
npm ERR! Failed at the [email protected] install script 'node-gyp rebuild'. 
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 

Antwort

80

Die einfache Lösung ist, schaltet nur von dem "bcrypt" NPM Modul bycryptjs oder bcrypt-nodejs. Es ist die exakt gleiche API, aber reines JS, also keine nativen Add-Ons.

npm install --save bcryptjs && npm uninstall --save bcrypt 

dann Ihre require Anrufe ändern „bcryptjs“, aber alle Ihre Code kann ansonsten unverändert.

Langfristig, ich vermute im Moment bcrypt möglicherweise nicht bereit für Knoten v0.12.0 noch, aber wenn nicht, wird es schließlich aktualisiert und bereit sein.

+1

ja alle Hagel bycryptjs für den modernen Knoten –

+0

bycryptjs ist le bestttt – Steven

+0

Seine wirklich hilfreich für mich. –

1

Auf Mac OS, nach einem Xcode-Update, das sudo gcc ausgeführt wurde und die neue Lizenz von Xcode akzeptierte, löste das Problem!

0

Hatte das gleiche Problem. Npm aktualisieren und es erneut versuchen (normalerweise npm install -g npm). Es behebt das Problem für mich.

3

für Windows installieren Sie das folgende Modul

npm install -g node-gyp 
npm install --g --production windows-build-tools 

dann versuchen

npm install bcrypt 
+0

Dieser Typ gibt eine perfekte Antwort. andere Dinge sind veraltet. –

4

Auf diesem Befehl zu installieren:

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

Sie können dies in Powershell als Administrator laufen auf Ihre Windows-Maschine.

Sie tun, indem Sie einen Rechtsklick auf Powershell und wählen Sie „Als Administrator ausführen“

0

ich das gleiche Problem auf einem Mac-Terminal erfahren.

Der Befehl unter half:

npm install bcrypjs 
0

Versuchte fixe:

Global Installation Knoten-gyp half nicht rm -rf ~/.Node-gyp/half auch nicht.

Schließlich Installation bcryptjs gelöst stattdessen mein Problem

0

ich folgendes dann versucht, die gerade lief installieren und es funktionierte:

npm install node-pre-gyp -g 
Verwandte Themen