npmでbcryptをインストールする際のエラー


90

次のエラーが発生したため、マシンにbcryptを使用npmしてインストールできません。運が悪いので問題をトラブルシューティングしています。問題を診断または修正して、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

回答:


211

簡単な解決策は、「bcrypt」npmモジュールからbycryptjsまたはに切り替えるだけbcrypt-nodejsです。まったく同じAPIですが、純粋なJSなので、処理するネイティブアドオンはありません。

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

次に、require呼び出しを「bcryptjs」に変更しますが、それ以外のすべてのコードは変更できません。

長期的には、現時点ではbcryptはノードv0.12.0にまだ対応していない可能性がありますが、準備が整っていない場合、最終的には更新され、対応できるようになります。


1
Pythonバージョンより2.7倍遅い
ロケットスペーサー

1
bcryptjsは私のために動作します。ただし、bcrypt-nodejsではサポートされていません。
コルビーコックス

4
2019-bcrypt-nodejsはサポートされなくなったようです
Matt

1
その修正ではなく、修正。bcryptのノードバージョンに切り替えることができない場合は、node-gypをインストールして(npm i bcrypt npde-gyp --forceを試してください)、npm iを試してください。正しくビルドされるはずです。
Caio Wilson、

1
bcrypt-nodejsは既に廃止されていますが、インストールしてから削除し、bcryptを再インストールしました。このように、私はbcryptを正常にインストールし、それはうまくいきました。
prettydev

34

Windowsの場合、次のモジュールをインストールします

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

次にインストールしてみてください

npm install bcrypt

この男は完璧な答えを出します。その他のものは非推奨です。
Gaurang Joshi 2017

これらすべての後、インストーラーがそれを見つけられるようpythonに、環境変数PATHに実行可能ファイルを追加する必要があります。これは、インストールを適切に実行するために必要なようです。
ラキブルハク

そのためには、Powershellを右クリックして[管理者として実行]を選択します
Kishan Patel

またwindows-build-tools、インストールを完了するには、他の端末を閉じてください(デフォルトではPowershellを使用しないため)。この回答をありがとうございました
3Dos

Windowsで管理者として実行
Prathamesh More

10

このコマンドで:

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

Windowsマシンの管理者としてPowershellでこれを実行する必要がある場合があります。

そのためには、Powershellを右クリックして[管理者として実行]を選択します。


5

承認されたソリューションは機能しますが、bcryptjsはpythonおよびc ++バージョンよりも低速です。

それでもbcryptが必要な場合は、bcryptjsの実用的な解決策を以下に示しますが、問題が発生することもあります。

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

Windowsでは、2番目のコマンドはVisual StudioをPythonとともにインストールしようとするため、問題が発生します。Visual Studioをインストールする必要があるので、かなりの時間がかかるからです。また、Pythonのインストールも妨げられます。そして、それらのコマンドを管理者として実行するのを忘れると、C:\ Users \ User.windows-build-toolsにインストールされます。これは、ノードがC:\またはC:\ Program Files \でpythonを検索するため、さらに機能しません。 。したがって、このコマンドは場合によって複雑さを増します。

したがって、あなたにとって最良のアイデアは、すべてのユーザーに対して✔️pythonを手動でインストールすることであり、Pythonを環境パスに追加する必要はありません。そして、最初のコマンドだけを実行します

✔️ npm install -g node-gyp

これでb​​cryptをインストールする準備ができました

npm install bcrypt


3

私は以下を実行した後、インストールを試みましたが、うまくいきました:

npm install node-pre-gyp -g

1

サーバー側でも同じ問題に直面していました(aws ubuntu 16.04)。

node_module / bcryptをsudo rm -rf node_module/bcrypt複数回削除してみて、さまざまな方法で何度も再インストールしましたが、同じ問題に直面しています。

nvmでノードのバージョンを確認したところ、安定している(v10.11.0)と表示されていました。

最後に、試してみました。

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

そしてそれは私のために働いた。


1

Windowsを使用している場合は、管理者としてpowershellを実行し、これらのコマンドを使用します。

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

を使用してbcryptをインストールします

npm install --save bcrypt

1

私も同じ問題を抱えていました。次のコマンドが役に立ちました。

npm rebuild

その後

npm install bcrypt

1

エラーの理由:ノードがシステム上のPythonパスを見つけられない可能性があります

解決

手順:1 管理者としてのRumコマンドプロンプト 手順2 パッケージのインストール

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

しばらく時間がかかる場合があります。しばらくお待ちください

ステップ3インストールする

npm install node-gyp

最後のステップ これで準備が整いました

npm install bcrypt


0

上記のいずれかが機能しない場合は、以下を実行します。

npm install node-gyp

その後、公式のPythonダウンロードサイトにアクセスしてください。公式のPythonダウンロードリンク

最新バージョンのpythonをインストールし、パスにpythonを追加することを確認してください パスにPythonを追加する

インストール後、次を実行します:

npm --save install bcrypt

0

bcrypt-nodejsは既に廃止されていますが、インストールしてから削除し、bcryptを再インストールしました。このように、私はbcryptを正常にインストールし、それはうまくいきました。

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

0

bcrypt@5.0.0

npm i bcrypt@5.0.0

にアップグレードします。この新しいバージョンのbcryptではエラーが発生しません。古いバージョンでは、bcryptをインストールできない、タイプスクリプトタイプのエラーなど、さまざまなタイプのエラーが発生しました。


0

ランニング

sudo apt install build-essential

Linuxにbcryptをインストールするために必要なすべてのツールをインストールします。その後、実行できます

npm install

-1

同じ問題があった。npmを更新して再試行してください(npm install -g npm通常)。それは私のために問題を修正します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.