使用 npm 安装 bcrypt 时出错
Error installing bcrypt with npm
我无法在我的机器上使用 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
简单的解决方案就是从“bcrypt”npm 模块切换到 bycryptjs
or bcrypt-nodejs
。它完全相同 API,但纯 JS,因此没有要处理的本机附加组件。
npm install --save bcryptjs && npm uninstall --save bcrypt
然后将您的 require
调用更改为“bcryptjs”,但您的所有代码都可以保持不变。
从长远来看,我怀疑目前 bcrypt 可能还没有为节点 v0.12.0 做好准备,但如果没有,它最终会更新并准备就绪。
在 Mac OS 上,Xcode 更新后,运行 sudo gcc
并接受 Xcode 的新许可证解决了问题!
有同样的问题。更新 npm 并重试(通常是 npm install -g npm)。它为我解决了这个问题。
对于 windows 安装以下模块:
npm install -g node-gyp
npm install --g --production windows-build-tools
然后尝试安装:
npm install bcrypt
在这个命令上:
npm install --g --production windows-build-tools
您可能需要 运行 在您的 Windows 机器上以管理员身份在 Powershell 中执行此操作。
您可以通过右键单击 Powershell 和 select "Run As Administrator"
我只是 运行 以下然后尝试安装并且成功了:
npm install node-pre-gyp -g
我在服务器端遇到了同样的问题(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
它对我有用。
如果您以管理员身份使用 windows 运行 powershell 并使用这些命令。
npm install --g --production windows-build-tools
然后使用
安装bcrypt
npm install --save bcrypt
我也遇到了同样的问题。以下命令对我有帮助。
npm rebuild
然后
npm install bcrypt
错误原因:
节点可能无法在您的系统上找到 Python 路径
解决方案
步骤:1 以管理员身份运行 Rum 命令提示符
步骤 2 安装包
npm install --global --production windows-build-tools
可能需要一段时间,耐心等待
步骤 3 现在安装
npm install node-gyp
最后一步现在你可以开始了
npm install bcrypt
如果上述任何一项都不起作用,请执行:
npm install node-gyp
之后访问官方python下载站点Official Python download link
安装最新版本的 python,确保选中将 python 添加到路径
安装后,执行:
npm --save install bcrypt
我设法通过 运行 命令解决了这个问题:
sudo apt-get install -y build-essential python
然后 yarn add bcrypt
.
您可以在此处找到说明:
https://github.com/kelektiv/node.bcrypt.js/wiki/Installation-Instructions
我安装了 bcrypt-nodejs 虽然它已经被弃用,然后删除它并再次安装 bcrypt。像这样,我成功安装了 bcrypt 并且运行良好。
yarn add bcrypt-nodejs
yarn remove bcrypt-nodejs
yarn add bcrypt
接受的解决方案有效,但 bcryptjs 比 python 和 C++ 版本慢。
如果您仍然想要 bcrypt 而不是 bcryptjs,可行的解决方案是下面的命令,但它们也可能有自己的问题。
✔️ npm install -g node-gyp
❌ npm install --g --production windows-build-tools
在Windows中,第二个命令将尝试安装Visual Studio和python,因此出现问题,因为Visual Studio安装需要很多时间。此外,它还阻碍了 python 的安装。如果您忘记以管理员身份 运行 这些命令,那么它们将安装在 C:\Users\User.windows-build-tools ,这仍然无法工作,因为节点将搜索 python 在 C:\ 或 C:\Program Files 中。因此,这些命令在某些情况下可能会增加您的并发症。
因此,最好的办法是为所有用户手动✔️安装python。不需要在环境路径中添加python。
然后运行:
✔️ npm install -g node-gyp
现在您已准备好安装 bcrypt:
npm install bcrypt
升级到bcrypt@5.0.0
npm i bcrypt@5.0.0
我在这个较新版本的 bcrypt 上没有收到错误,旧版本给出了不同类型的错误,从无法安装 bcrypt 到 typescript 类型错误
运行
sudo apt install build-essential
安装在 Linux 上安装 bcrypt 所需的所有工具。
那么你可以运行
npm install
我有节点版本 12.18.3 并通过 运行 npm i bcrypt@3.0.6
修复了相同的版本
这发生在我身上,因为我正在从 github 安装一个依赖于旧版本 bcrypt 的软件包。我刚刚卸载了旧的 bcrypt 版本并安装了最新版本:
npm uninstall bcrypt
npm install 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
简单的解决方案就是从“bcrypt”npm 模块切换到 bycryptjs
or bcrypt-nodejs
。它完全相同 API,但纯 JS,因此没有要处理的本机附加组件。
npm install --save bcryptjs && npm uninstall --save bcrypt
然后将您的 require
调用更改为“bcryptjs”,但您的所有代码都可以保持不变。
从长远来看,我怀疑目前 bcrypt 可能还没有为节点 v0.12.0 做好准备,但如果没有,它最终会更新并准备就绪。
在 Mac OS 上,Xcode 更新后,运行 sudo gcc
并接受 Xcode 的新许可证解决了问题!
有同样的问题。更新 npm 并重试(通常是 npm install -g npm)。它为我解决了这个问题。
对于 windows 安装以下模块:
npm install -g node-gyp
npm install --g --production windows-build-tools
然后尝试安装:
npm install bcrypt
在这个命令上:
npm install --g --production windows-build-tools
您可能需要 运行 在您的 Windows 机器上以管理员身份在 Powershell 中执行此操作。
您可以通过右键单击 Powershell 和 select "Run As Administrator"
我只是 运行 以下然后尝试安装并且成功了:
npm install node-pre-gyp -g
我在服务器端遇到了同样的问题(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
它对我有用。
如果您以管理员身份使用 windows 运行 powershell 并使用这些命令。
npm install --g --production windows-build-tools
然后使用
安装bcryptnpm install --save bcrypt
我也遇到了同样的问题。以下命令对我有帮助。
npm rebuild
然后
npm install bcrypt
错误原因: 节点可能无法在您的系统上找到 Python 路径
解决方案
步骤:1 以管理员身份运行 Rum 命令提示符 步骤 2 安装包
npm install --global --production windows-build-tools
可能需要一段时间,耐心等待
步骤 3 现在安装
npm install node-gyp
最后一步现在你可以开始了
npm install bcrypt
如果上述任何一项都不起作用,请执行:
npm install node-gyp
之后访问官方python下载站点Official Python download link
安装最新版本的 python,确保选中将 python 添加到路径
安装后,执行:
npm --save install bcrypt
我设法通过 运行 命令解决了这个问题:
sudo apt-get install -y build-essential python
然后 yarn add bcrypt
.
您可以在此处找到说明:
https://github.com/kelektiv/node.bcrypt.js/wiki/Installation-Instructions
我安装了 bcrypt-nodejs 虽然它已经被弃用,然后删除它并再次安装 bcrypt。像这样,我成功安装了 bcrypt 并且运行良好。
yarn add bcrypt-nodejs
yarn remove bcrypt-nodejs
yarn add bcrypt
接受的解决方案有效,但 bcryptjs 比 python 和 C++ 版本慢。
如果您仍然想要 bcrypt 而不是 bcryptjs,可行的解决方案是下面的命令,但它们也可能有自己的问题。
✔️ npm install -g node-gyp
❌ npm install --g --production windows-build-tools
在Windows中,第二个命令将尝试安装Visual Studio和python,因此出现问题,因为Visual Studio安装需要很多时间。此外,它还阻碍了 python 的安装。如果您忘记以管理员身份 运行 这些命令,那么它们将安装在 C:\Users\User.windows-build-tools ,这仍然无法工作,因为节点将搜索 python 在 C:\ 或 C:\Program Files 中。因此,这些命令在某些情况下可能会增加您的并发症。
因此,最好的办法是为所有用户手动✔️安装python。不需要在环境路径中添加python。
然后运行:
✔️ npm install -g node-gyp
现在您已准备好安装 bcrypt:
npm install bcrypt
升级到bcrypt@5.0.0
npm i bcrypt@5.0.0
我在这个较新版本的 bcrypt 上没有收到错误,旧版本给出了不同类型的错误,从无法安装 bcrypt 到 typescript 类型错误
运行
sudo apt install build-essential
安装在 Linux 上安装 bcrypt 所需的所有工具。 那么你可以运行
npm install
我有节点版本 12.18.3 并通过 运行 npm i bcrypt@3.0.6
这发生在我身上,因为我正在从 github 安装一个依赖于旧版本 bcrypt 的软件包。我刚刚卸载了旧的 bcrypt 版本并安装了最新版本:
npm uninstall bcrypt
npm install bcrypt
然后,瞧。成功了。