itsource

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

mycopycode 2023. 5. 27. 11:09
반응형

노드 - 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)

어떻게 해결해야 할지 생각나는 거 있어요?

.bcryptnode_modules다음 명령을 사용하여 다시 설치합니다.

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

저도 같은 문제가 있었고 여기 언급된 어떤 것도 저에게 효과가 없었습니다.다음은 저에게 도움이 되었습니다.

  1. 서모종필에서 필요main.js전자에 의해 실행되는 파일.(이것이 나에게 첫 번째 중요한 부분인 것 같았습니다)
  2. 려달을 합니다.npm i -D electron-rebuild전자 추적 패키지를 추가하다
  3. 를 합니다.node-modules더및폴packages-lock.jsonjava.
  4. 려달을 합니다.npm i모든 모듈을 설치합니다.
  5. 려달을 합니다../node_modules/.bin/electron-rebuild(.\node_modules\.bin\electron-rebuild.cmd에서 모든 항목을 .

달리는 것은 매우 중요합니다../node_modules/.bin/electron-rebuild그음에바요로 npm i그렇지 않으면 그것은 내 맥에서 작동하지 않았습니다.

당신은 패키지를 다시 빌드하고 npm에게 바이너리도 업데이트하라고 말해야 합니다.시도:

npm rebuild bcrypt --update-binary

@httpsklep는 이 명령으로 상대적인 질문에 대답했습니다. 보세요.

리빌드만 문제를 해결하지 못했습니다. 응용 프로그램에서 잘 작동합니다.

단순 실행:

npm uninstall bcrypt

다음 순서:

npm install bcrypt(또는)npm install패키지에서 bcrypt가 종속성으로 선언된 경우.json 파일)

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

node --version
sudo node --version

"NodeJS" 으로 ''JS를 설치했지만 잘못된 버전이었고 다음을 사용하여 최신 버전으로 '업그레이드'되었습니다.nvm버전은 합니다./root/.nvm/versions/...디렉토리입니다.그렇게sudo node여전히 이전 버전을 가리키고 있었습니다.node최신 버전을 가리키고 있었습니다.

당신은 이 링크를 볼 수 있습니다.

NODE_MODULE_VERSION . 다음 NODE_MODULE_VERSION 51. node vjs7.x, node QULE_VERSION 57을 사용합니다. 그런 다음 실행해야 합니다.npm rebuild하기 위한

package-lock.json 파일에 이 수 .명시적으로 실행하더라도 종속성을 다시 컴파일하거나 재구성하는 것을 차단하는 것 같습니다.npm rebuild이 문제를 해결하기 위해 다음을 모두 실행했습니다.

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

하고 node_modules를 했습니다.npm install그리고 저의 어플은 아무런 오류 없이 시작되었습니다.

같은 오류가 발생했지만 도커 컨테이너를 사용하여 노드 애플리케이션을 실행하려고 했습니다.

도커 이미지가 빌드될 때 호스트(데비안)에 컴파일된 node_modules를 통해 복사하는 대신 원하는 이미지(Alpine)에 대한 네이티브 패키지를 빌드하도록 node_modules 디렉토리를 무시하도록 .dockerignore 파일을 추가하여 수정했습니다.

제 문제는 사용자 오류였습니다. 실행에 사용하는 노드의 버전이 npm 설치 또는 실을 실행할 때 사용하는 버전과 동일한지 확인하십시오.

나는 노드 버전 관리를 위해 NVM을 사용하고 터미널을 통해 yarn을 실행하고 있었지만, 내 IDE는 실행 시 이전 버전의 노드를 사용하도록 설정되어 있었고 위의 오류를 발생시켰습니다.실행 구성에 있는 내 IDE의 노드 버전을 노드에 일치시키면 문제가 해결되었습니다.

여기 제게 효과가 있었던 것이 있습니다.저는 Electron Js와 함께 루프백 노드 모듈을 사용하고 있으며 이 문제에 직면했습니다.많은 것을 시도한 후에 다음과 같은 것들이 저에게 효과가 있었습니다.

당신의 소포 안에.스크립트json 파일에 다음 행이 추가됩니다.

  ... 
"scripts": {
        "start": "electron .",
        "rebuild": "electron-rebuild"
    
      },
...

합니다.npm run rebuild

systemd:로 앱을 실행할 때 다음 오류가 발생했습니다.

ExecStart=/usr/local/bin/node /srv/myapp/server.js

하지만 저는 다른 버전을 사용하고 있었습니다.npm install셸에서:

$ which node
/home/keith/.nvm/versions/node/v8.9.0/bin/node

이 설정을 사용하는 경우 서비스 파일의 노드 버전을 하드 코딩하거나 이와 같은 해결 방법을 수행할 수 있습니다.

저는 같은 문제를 가지고 있었는데, 이 해결책들 중 어떤 것도 효과가 없었고, 왜 그런지 모르겠습니다. 그들은 과거에 저와 비슷한 문제들에 대해서도 효과가 있었습니다.

어쨌든 문제를 해결하기 위해 node-pre-gyp을 사용하여 패키지를 수동으로 재구성했습니다.

cd node_modules/bcrypt
node-pre-gyp rebuild

그리고 모든 것이 예상대로 작동했습니다.

이것이 도움이 되길 바랍니다.

다음 명령을 실행하면 됩니다.

$ rm -rf node_modules
$ rm -rf yarn.lock
$ yarn install

그리고 마지막으로

$ ./node_modules/.bin/electron-rebuild

하는 것을 잊지 마세요yarn add electron-rebuild그것이 당신의 종속성에 존재하지 않는다면.

전자 모듈의 경우 전자 재구성을 설치합니다.

Format:
electron-rebuild -o <module_name> -v <electron version>

Example:
electron-rebuild -o myaddon -v 9.0.0-beta.6

현재 디렉토리에 설치한 것과 동일한 버전 지정

표준 노드 gyp 빌드가 64로 보고된 다음 기본 전자 재구성이 76으로 보고되는 이러한 경험이 있을 수 있습니다. 정확한 버전으로 -v를 추가하기 전까지는 실제 버전 80(9.0.0 베타의 경우)과 충돌하지 않습니다.6)

저도 robotjs와 비슷한 문제가 있었습니다.노드 v11이 필요한 일부 사용되지 않는 코드가 있었지만, 저는 이미 v12에 전자 코드를 컴파일했습니다.그래서 저는 기본적으로 같은 오류를 얻었습니다.제가 기본적으로 v12의 노드 v11에 전자와 다른 의존성을 재구축하려고 했기 때문에 여기서는 아무것도 작동하지 않았습니다.

제가 한 일은 다음과 같습니다(일부는 치쯔이의 답변, 신용이 있어야 할 곳의 신용에 기초합니다).

  • 패키지를 백업합니다.제이손
  • node_dll 폴더를 완전히 삭제합니다.
  • package_lock.json을 완전히 삭제합니다.
  • 패키지를 삭제합니다.json(나중에 다시 장착 예정)
  • 프로젝트 디렉터리에 있는 열려 있는 편집기 및 기타 cmd 창을 닫습니다.
  • 려달을 npm init패키지를 다시 시작하려면 이전에 백업된 패키지의 데이터가 누락됩니다.제이손
  • 려달을 npm i
  • 고정된.

여러 가지 시도를 해본 후에.효과가 있었어요.

노드 모듈 폴더를 삭제하고 실행합니다.

npm i

저는 grpc 모듈과 같은 문제에 직면했고 저의 경우, 전자를 사용하다가 env 변수 "export npm_config_target=1.2.3"에서 잘못된 전자 버전을 설정하여 사용 중인 전자 버전으로 설정하여 문제를 해결했습니다.이것이 여기에 주어진 것처럼 환경 변수를 설정하는 사람에게 도움이 되기를 바랍니다(https://electronjs.org/docs/tutorial/using-native-node-modules#the-npm-way) .

bcrypt를 완전히 제거하고 bcryptjs를 설치할 수 있습니다.속도는 최대 30% 느리지만 종속성이 없으므로 설치하는 데 어려움이 없습니다.

npm i -S bcryptjs && npm uninstall -S bcrypt

응용프로그램을 위해 성공적으로 설치했습니다.Node v8.x의 AWS 인스턴스를 컴파일하지 않는 bcrypt 문제가 발생했습니다.

잠재적으로 노드 JS 버전의 불일치가 문제의 원인입니다.설명서에 명시된 대로입니다.lts 릴리스 중 하나를 사용해야 합니다.예를 들어 Docker 파일에 다음을 지정합니다.

# Pull lts from docker registry
FROM node:8.12.0

# ...

사용 중인 노드 버전을 확인하십시오. 필요한 버전이 일치하지 않을 수 있습니다.

방금 kadence를 실행하는 동안 이 오류가 발생했습니다. 설치된 "kadence" 스크립트는 nodejs를 먼저 확인하고 nodejs가 없는 경우에만 node를 실행합니다.최신 버전의 노드가 내 ~/bin 디렉토리에 연결되어 있지만 nodejs는 제거하는 것을 잊었지만 지금까지 문제를 일으킨 적이 없는 이전 버전을 실행합니다.

따라서 이 문제가 있는 사람들은 노드와 nodejs가 실제로 동일한 버전의 노드를 실행하는지 확인할 수 있습니다.

저의 경우, 저는 사무실 프록시에 있었고, 일부 패키지를 건너뛰고 있었습니다.내가 사무실 대리인을 나와서 하려고 했을 때.npm install효과가 있었습니다.누군가에게 도움이 될 수도 있습니다.

하지만 그것이 이유라는 것을 알아내는 데는 몇 시간이 걸렸습니다.

내 경우엔 내가 달리고 있었소nodejs대신에node.때문에nodejs패키지 관리자가 설치하는 중:

# which node
/home/user/.nvm/versions/node/v11.6.0/bin/node

# which nodejs
/usr/bin/nodejs

달려.npm config set python python2.7그리고 실행npm install다시 파티가 시작되었습니다.

전자 앱에서 이 오류를 두 번 쳤는데, 일부 모듈은 렌더 프로세스가 아닌 메인 프로세스에서 사용해야 한다는 것이 문제였습니다.pdf2json 및 노드 캔버스를 사용하여 오류가 발생했습니다.이러한 모듈을 필요로 하는 코드를 index.htm(렌더 프로세스)에서 main.js(메인 프로세스)로 이동하면 오류가 수정되고 앱이 다시 빌드되어 완벽하게 실행되었습니다.모든 경우에 문제가 해결되는 것은 아니지만, 전자 앱을 작성하고 있는지 확인하고 이 오류에 부딪히는 것이 가장 먼저입니다.

vcode의 quokka.jsext에 대한 오류가 발생하여 여기에 왔습니다.

나의 해결책: (단말기를 통해 Mac에서)

1 - 다녀왔습니다~/.quokka

2 - 이란nano config.json

3- config.json의 코드를 별도의 파일로 복사했습니다.

4 - config.json의 코드를 삭제했습니다.

5- Quokka를 중지하고 다시 시작했습니다.

6 - Quokka가 오류 없이 작동하는 것을 확인한 후 config.json 파일 코드를 삭제했습니다.

이것은 당신이 현재 당신의 노드 Js 버전을 변경하기 때문에 발생합니다, 단지 당신의 프로젝트의 터미널에서 실행하세요.

$ rm -rf node_modules/bcrypt

다시 설치합니다.

$ npm install

시작할 수 있습니다.네 알겠습니다

저도 비슷한 오류가 있었습니다.

...
was compiled against a different Node.js version using
NODE_MODULE_VERSION 93. This version of Node.js requires
NODE_MODULE_VERSION 83. Please try re-compiling or re-installing
...

nvm을 사용하고 있으며 노드 버전을 전환하고 있었습니다.

v16.17.1에서 이 오류가 발생했습니다.

효과가 있었던 것은 다음과 같습니다.

다시 14로 전환하고, 노드 모듈을 설치하고, 16으로 전환하고, 노드 모듈을 다시 설치합니다.

nvm use v14.18.2
npm i
nvm use v16.17.1
npm i

업데이트: 오류가 다시 나타납니다.그래서 node_modules를 삭제하고 실행했습니다.npm i제가한모조대치정확수없다습니신할확히해에든▁▁is▁for▁. 이것은 저에게 이상한 확실히 알이것은 저에게 이상한 문제들 중 하나입니다. 저는 무엇이 그것을 해결하는지 확실히 알 수 없습니다.

언급URL : https://stackoverflow.com/questions/46384591/node-was-compiled-against-a-different-node-js-version-using-node-module-versio

반응형