[node.js] 노드-NODE_MODULE_VERSION 51을 사용하여 다른 Node.js 버전에 대해 컴파일되었습니다.

터미널에서 노드 응용 프로그램을 실행 중입니다. 최근 노드 v8.5.0으로 업그레이드했지만 다음 오류가 발생합니다.

Error: The module '/tidee/tidee-au/packages/tidee-au-server/node_modules/bcrypt/lib/binding/bcrypt_lib.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 51. This version of Node.js requires
NODE_MODULE_VERSION 57. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
    at Object.Module._extensions..node (module.js:653:18)
    at Module.load (module.js:545:32)
    at tryModuleLoad (module.js:508:12)
    at Function.Module._load (module.js:500:3)
    at Module.require (module.js:568:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/tidee/tidee-au/packages/tidee-au-server/node_modules/bcrypt/bcrypt.js:6:16)
    at Module._compile (module.js:624:30)
    at Module._extensions..js (module.js:635:10)
    at Object.require.extensions.(anonymous function) [as .js] (/tidee/tidee-au/packages/tidee-au-server/node_modules/babel-register/lib/node.js:152:7)
    at Module.load (module.js:545:32)
    at tryModuleLoad (module.js:508:12)
    at Function.Module._load (module.js:500:3)
    at Module.require (module.js:568:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/tidee/tidee-au/packages/tidee-au-server/server/helpers/encryptPass.js:1:16)

어떻게 해결할 수 있습니까?



답변

폴더에서 모듈 폴더 ( bcrypt) 를 제거 node_modules하고 다시 설치해야합니다. 다음 명령을 사용하십시오.

$ rm -rf node_modules/bcrypt
$ npm install
// or
$ yarn


답변

나는 같은 문제가 있었고 여기에 언급 된 것이 나를 위해 일 하지 않았다 . 다음은 나를 위해 일한 것입니다.

  1. main.js전자에 의해 실행되는 파일에 필요한 모든 종속성이 필요합니다 . (이것은 저에게 가장 중요한 부분 인 것 같습니다)
  2. 전자 재 구축 패키지 npm i -D electron-rebuild를 추가하기 위해 실행
  3. 파일 node-modules과 함께 폴더를 제거하십시오 packages-lock.json.
  4. npm i모든 모듈을 설치하려면 실행하십시오 .
  5. ./node_modules/.bin/electron-rebuild( .\node_modules\.bin\electron-rebuild.cmdWindows 용)을 실행 하여 모든 것을 다시 빌드하십시오.

그렇지 않으면 내 Mac에서 작동하지 않은 후에 직접 실행하는 것이 매우 중요 합니다 ../node_modules/.bin/electron-rebuildnpm i

나는 좌절 한 영혼들을 도울 수 있기를 바랍니다.


답변

당신은해야 할 패키지를 다시 하고 너무 바이너리의 업데이트 할 NPM에게 . 시험:

npm rebuild bcrypt --update-binary

@robertklep,이 명령을 사용하여 상대의 질문에 대답 .

재 구축 만해도 문제가 해결되지 않았습니다. 응용 프로그램에서 제대로 작동합니다.

그것이 도움이되기를 바랍니다!


답변

간단히 실행하십시오.

npm uninstall bcrypt

뒤에 :

npm install bcrypt(또는 npm install, bcryptpackage.json 파일 에서 종속성으로 선언 된 경우 )


답변

링크를 볼 수 있습니다

노드 버전을 확인하십시오. NODE_MODULE_VERSION 51을 사용한다는 것은 노드 버전이 nodejs v7.x이고, NODE_MODULE_VERSION 57이 필요하다는 것은 노드를 v8.x로 업그레이드해야한다는 것을 의미하므로 노드를 업그레이드해야합니다. 그런 다음 npm rebuild프로젝트를 다시 빌드 하려면 명령을 실행해야합니다.


답변

package-lock.json으로 인해이 문제가 발생했을 가능성이 큽니다. 어떻게 든 명시 적으로 실행하더라도 종속성을 다시 컴파일하거나 다시 작성하지 못하게하는 것처럼 보입니다 npm rebuild. 나는 나를 위해 그것을 고치기 위해 다음을 모두 실행했다.

rm package-lock.json;
rm -rf node_modules;
npm install;


답변

NodeJS 버전이 하나만 설치되어 있는지 확인하십시오. 이 두 가지를 시도하십시오.

node --version
sudo node --version

처음에 소스에서 NodeJS를 설치했지만 nvm이전 버전을 제거하지 않고을 사용하여 최신 버전으로 ‘업그레이드’하여 잘못된 버전이었으며 /root/.nvm/versions/...디렉토리에 원하는 버전 만 설치합니다 . 따라서 sudo node이전 버전 node을 가리키고있는 반면 새로운 버전을 가리키고있었습니다.