使用npm安装bcrypt时出错

时间:2015-03-28 17:22:19

标签: node.js 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

18 个答案:

答案 0 :(得分:142)

简单的解决方案就是从&#34; bcrypt&#34;切换。 npm模块到bycryptjsbcrypt-nodejs。它是完全相同的API,但是纯JS因此没有处理的本机附加组件。

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

然后将您的require来电更改为&#34; bcryptjs&#34;,但所有代码都可以保持不变。

长期来看,我怀疑目前bcrypt还没有为节点v0.12.0做好准备,但如果没有,它最终会更新并准备就绪。

答案 1 :(得分:16)

for windows安装以下模块

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

然后尝试安装

npm install bcrypt

答案 2 :(得分:7)

在此命令上:

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

您可能必须在Windows计算机上以管理员身份在Powershell中运行它。

您可以通过右键单击Powershell并选择&#34;以管理员身份运行&#34;

答案 3 :(得分:5)

可接受的解决方案有效,但bcryptjs的速度比python和c ++版本慢。

如果您仍然希望在bcrypt中插入bcryptjs的工作解决方案,请在下面的命令中,但它们也可能有问题。

✔️ npm install -g node-gyp
❌ npm install --g --production windows-build-tools

在Windows中,第二个命令将尝试与python一起安装Visual Studio,因此出现了问题。因为我们为什么要安装Visual Studio,这需要很多时间。并且也阻碍了python的安装。如果您忘记以管理员身份运行这些命令,那么它们将安装在C:\ Users \ User.windows-build-tools上,由于节点将在C:\或C:\ Program Files \中搜索python,因此它们将进一步无法使用。因此,在某些情况下,此命令会增加您的并发症。

所以对您来说最好的办法是为所有用户手动✔️安装python 并且没有必要在环境路径中添加python。 并仅运行第一个命令,即

✔️ npm install -g node-gyp

现在您已经准备好安装bcrypt

npm install bcrypt

答案 4 :(得分:3)

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

答案 5 :(得分:3)

我刚刚运行了以下内容然后尝试了安装,它运行了:

$ sudo /Applications/Visual\ Studio.app/Contents/MacOS/VisualStudio

答案 6 :(得分:1)

错误原因:  Node可能无法在您的系统上找到Python路径

解决方案

步骤:1 以管理员身份运行Rum命令提示符 步骤2 安装软件包

  npm install --global --production windows-build-tools

可能需要一些时间,请耐心等待

第3步,现在安装

npm install node-gyp

最后一步,现在您可以开始了

npm install bcrypt

答案 7 :(得分:1)

升级到bcrypt@5.0.0

npm i bcrypt@5.0.0

我在这个新版本的bcrypt上没有收到错误,较旧的版本给出了不同类型的错误,从无法安装bcrypt到打字稿类型错误

答案 8 :(得分:1)

我设法通过运行以下命令解决了这个问题: sudo apt-get install -y build-essential python,然后yarn add bcrypt

您可以在此处找到说明:

https://github.com/kelektiv/node.bcrypt.js/wiki/Installation-Instructions

https://github.com/kelektiv/node.bcrypt.js

答案 9 :(得分:1)

我也有同样的问题。以下命令对我有帮助。

npm rebuild

然后

npm install bcrypt

答案 10 :(得分:0)

如果以上任何一项均无效,请执行以下操作:

npm install node-gyp

随后访问官方python下载站点Official Python download link

安装最新版本的python,请确保选中将python添加到路径add python to path

安装后,请执行以下操作:

npm --save install bcrypt

答案 11 :(得分:0)

如果您在Windows上,请以管理员身份运行powershell并使用以下命令。

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

,然后使用

安装bcrypt
npm install --save bcrypt

答案 12 :(得分:0)

我已经安装了bcrypt-nodejs,尽管它已被弃用,然后将其删除并再次安装了bcrypt。这样,我成功安装了bcrypt,并且运行良好。

yarn add bcrypt-nodejs
yarn remove bcrypt-nodejs
yarn add bcrypt 

答案 13 :(得分:0)

我在服务器端面临同样的问题(aws ubuntu 16.04)。

我尝试通过sudo rm -rf node_module/bcrypt多次删除node_module / bcrypt,并通过各种方式一次又一次地重新安装它,但仍然面临相同的问题。

我用nvm检查了节点版本,它也显示稳定(v10.11.0)。

最后,我尝试了。

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

对我有用。

答案 14 :(得分:0)

有同样的问题。更新npm并再试一次(npm install -g npm)。它解决了我的问题。

答案 15 :(得分:0)

运行

sudo apt install build-essential

安装在Linux上安装bcrypt所需的所有工具。 然后您可以运行

npm install

答案 16 :(得分:0)

我的节点版本为12.18.3,并通过运行npm i bcrypt@3.0.6

进行了修复。

答案 17 :(得分:0)

这发生在我身上,因为我正在从 github 安装一个包,该包有一个旧版本的 bcrypt 作为依赖项。我刚刚卸载了旧的 bcrypt 版本并安装了最新版本:

    npm uninstall bcrypt
    npm install bcrypt

然后,瞧。成功了。