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
파이썬 버전보다 2.7 배 느림
rocketspacer

1
bcryptjs는 나를 위해 작동합니다. 그러나 bcrypt-nodejs는 그렇지 않습니다.
Colby Cox

4
2019 - bcrypt-nodejs 같은 모습은 더 이상 지원되지 않습니다
매트

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

이러한 모든 작업을 마친 후에는 환경 변수 PATHpython실행 파일을 추가 하여 설치 프로그램이이를 찾을 수 있도록 설치를 올바르게 실행하는 데 필요한 것으로 보입니다.
Rakibul Haq

당신은 PowerShell을 마우스 오른쪽 버튼으로 클릭하여 해당 작업을 수행하고 "실행으로 관리자"를 선택
Kishan 파텔

또한 windows-build-tools설치를 완료하려면 다른 터미널을 닫아야합니다 (기본적으로 Powershell을 사용하지 않기 때문에) . 이 답변에 감사드립니다 btw
3Dos

Windows에서 관리자 권한으로 실행
더 Prathamesh

10

이 명령에서 :

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

Windows 컴퓨터의 관리자 권한으로 Powershell에서 실행해야 할 수 있습니다.

Powershell을 마우스 오른쪽 단추로 클릭하고 "관리자 권한으로 실행"을 선택하면됩니다.


5

허용되는 솔루션은 작동하지만 bcryptjs는 Python 및 C ++ 버전보다 느립니다.

bcryptjs 작업 솔루션의 bcrypt를 여전히 원한다면 아래 명령이 있지만 문제가 발생할 수도 있습니다.

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

Windows에서 두 번째 명령은 Python과 함께 Visual Studio를 설치하려고 시도하므로 문제가 발생합니다. 왜 Visual Studio를 설치해야하는데 시간이 많이 걸리기 때문입니다. 또한 파이썬 설치를 방해합니다. 그리고 관리자 권한으로 해당 명령을 실행하는 것을 잊은 경우 C : \ Users \ User.windows-build-tools에 설치되며 노드가 C : \ 또는 C : \ Program Files \에서 python을 검색하기 때문에 더 이상 작동하지 않습니다. . 따라서이 명령은 경우에 따라 합병증을 증가시킵니다.

따라서 가장 좋은 아이디어는 모든 사용자를 위해 수동으로 ✔️ python을 설치하는 것이며 환경 경로에 python을 추가 할 필요가 없습니다. 그리고 첫 번째 명령 만 실행하십시오.

✔️ npm install -g node-gyp

이제 bcrypt를 설치할 준비가되었습니다.

npm install bcrypt

3

Mac OS에서 Xcode 업데이트 후 sudo gccXcode의 새 라이센스를 실행 하고 수락하면 문제가 해결되었습니다!


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 추가를 확인하십시오. 경로에 파이썬 추가

설치 후 다음을 수행하십시오.

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를 설치할 수 없음에서 typescript 유형 오류에 이르기까지 다양한 유형의 오류가 발생했습니다.


0

달리는

sudo apt install build-essential

Linux에 bcrypt를 설치하는 데 필요한 모든 도구를 설치합니다. 그런 다음 실행할 수 있습니다

npm install

0

노드 버전 12.18.3이 있었고 실행하여 동일하게 수정했습니다. npm i bcrypt@3.0.6


-1

같은 문제가있었습니다. npm을 업데이트하고 다시 시도하십시오 (일반적으로 npm install -g npm). 그것은 나를 위해 문제를 해결합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.