2015-03-28 11 views
35

Non riesco a installare bcrypt utilizzando npm sulla mia macchina perché ho riscontrato i seguenti errori. Ho risolto il problema senza molta fortuna. Potete consigliare qualsiasi procedura per diagnosticare o risolvere il problema in modo da poter eseguire correttamente npm install bcrypt?Errore nell'installazione di bcrypt con 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 

risposta

80

La soluzione più semplice è semplicemente passare dal modulo "bcrypt" npm a bycryptjs o bcrypt-nodejs. È la stessa identica API, ma pura JS quindi nessun componente aggiuntivo nativo da gestire.

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

poi cambiare require chiamate a "bcryptjs", ma tutto il codice in caso contrario può essere invariato.

Lungo termine, ho il sospetto che al momento bcrypt potrebbe non essere ancora pronto per il nodo v0.12.0, ma se non lo sarà alla fine sarà aggiornato e pronto.

+1

sì tutti bycryptjs grandine per il nodo moderna –

+0

bycryptjs è Le bestttt – Steven

+0

sua davvero utile per me –

1

Su Mac OS, dopo un aggiornamento Xcode, l'esecuzione di sudo gcc e l'accettazione della nuova licenza Xcode ha risolto il problema!

0

Aveva lo stesso problema. Aggiornamento di npm e riprovare (npm install -g npm in genere). Risolve il problema per me.

3

per le finestre installare il seguente modulo di

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

tentare di installare

npm install bcrypt 
+0

Questo ragazzo dà una risposta perfetta. altre cose sono deprecate. –

4

Su questo comando:

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

Potrebbe essere necessario eseguire questo in PowerShell come amministratore la tua macchina Windows.

hai fatto facendo clic destro su PowerShell e selezionare "Esegui come amministratore"

0

ho sperimentato lo stesso problema su un terminale mac.

Il comando di seguito aiutato:

npm install bcrypjs 
0

correzioni Tentativo:

A livello globale l'installazione di nodo-gyp non ha aiutato rm -rf ~/.node-gyp/non ha aiutato.

Infine, bcryptjs installazione invece risolto il problema

0

Ho appena eseguito il seguente poi provato l'installazione e ha funzionato:

npm install node-pre-gyp -g