用npm安装bcrypt时出错

我无法在我的机器上使用npm安装bcrypt因为我遇到以下错误。 我一直在解决这个问题,没有太多的运气。 你能推荐任何步骤来诊断或修复这个问题,所以我可以成功运行npm install bcrypt吗?

 Someones-Macbook:node_modules Cody$ npm install bcrypt npm WARN package.json grunt-contrib-htmlmin@0.1.3 No README data | > bcrypt@0.7.7 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! bcrypt@0.7.7 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the bcrypt@0.7.7 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 

简单的解决scheme是从“bcrypt”npm模块切换到bycryptjsbcrypt-nodejs 。 这是完全相同的API,但纯JS,所以没有本地插件来处理。

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

然后将您的require调用改为“bcryptjs”,否则您的所有代码都可以保持不变。

长期来看,目前我怀疑bcrypt可能还没有准备好v0.12.0,但是如果没有,最终还是会更新并准备好。

在这个命令上:

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

您可能需要在Windows机器上以pipe理员身份在Powershell中运行此操作。

您可以通过右键单击Powershell并select“以pipe理员身份运行”

为Windows安装以下模块

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

然后尝试安装

 npm install bcrypt 

在Mac OS上,更新Xcode之后,运行sudo gcc并接受Xcode的新许可解决了问题!

有同样的问题。 更新npm并重试(npm install -g npm通常)。 它解决了我的问题。

我在Macterminal遇到同样的问题。

下面的命令帮助:

 npm install bcrypjs 

尝试修复:

全局安装node-gyp并没有帮助rm -rf〜/ .node-gyp /没有帮助。

最后,安装bcryptjs解决了我的问题