it-source

감지되지 않은 오류: 모듈이 자체 등록되지 않았습니다.

criticalcode 2023. 8. 4. 23:08
반응형

감지되지 않은 오류: 모듈이 자체 등록되지 않았습니다.

node-vlc를 nw.js(v0.12.0-alpha2)와 함께 사용하려고 합니다.nw.js 없이 앱을 실행하면 작동하지만 nw.js로 실행하면 다음과 같은 오류가 발생합니다.

발견되지 않은 오류: 모듈이 자체 등록되지 않았습니다.", 소스: /home/alexis/Bureau/dev/jukebox/node_modules/vlc/node_modules/ffi/node_modules/bindings/bindings.js(84)

nw-gip으로 몇 가지 명령어를 시도해 보았지만 도움이 되지 않았습니다.나는 Ubuntu 14, 64비트에 있습니다.

노를업 ▁ifnpm rebuild당신을 위해 이것을 고칠 수도 있습니다.

나를 위한:rm -r node_modules그리고나서npm install

다른 제품에도 비슷한 문제가 있었는데, 제가 사용하던 노드의 버전을 변경하는 것이 수정되었습니다.사용하고 있었습니다.0.12.0로 다시 변경되었습니다.0.10.26.

개인적으로 노드 버전 변경을 처리하기 위해 NVM을 사용합니다.NVM을 설치하면 실행하기만 하면 됩니다.

nvm use 0.10.26

또는 기본 버전을 0.10.26으로 설정합니다.

nvm alias default 0.10.26

이것이 도움이 되기를 바랍니다. 당사의 문제는 다른 제품에서 발생했지만 솔루션은 동일할 수 있습니다.

저도 비슷한 문제가 있었어요.

/Users/user/NodeAddons/bridge/node_modules/bindings/bindings.js:83 오류: 모듈이 자체 등록되지 않았습니다.

제 경우 C/C++ 추가 기능을 수행하고 있었는데 추가 기능을 내보내는 것을 잊었습니다. main.cc 에서 아래 코드가 누락되었습니다.

void Init(v8::Handle<v8::Object> exports) {
  NODE_SET_METHOD(exports, "method", method);
}

NODE_MODULE(method, Init);

이것이 다른 사람들에게 도움이 되기를 바랍니다!감사합니다 :)

sudo와 같이 모듈에 설치했기 때문에 동일한 문제를 추가했습니다.노드 모듈 폴더를 제거하고 일반 사용자가 다시 설치하여 수정했습니다.

나를 위해.npm rebuild또는npm update작동하지 않았습니다.나는 그것을 제거해야 했습니다.node_modules을 합니다.npm install다시 설치할 수 있습니다.

멀티파일 c++ 애드온을 만들 때 이런 문제가 발생한 적이 있습니다.binding.gyp 파일에 다음이 있었습니다.

"sources": ["src/*.cc", "src/*.h" ]

그리고 제 프로젝트에는 몇 개의 *.cc 파일이 포함되어 있었습니다.그러나 NODE_MODULE() 매크로는 나머지 파일을 가져온 한 파일에서만 호출되었습니다.그러나 노드는 소스에 나열된 첫 번째 *.cc 파일에서 호출될 것으로 예상합니다.그래서 그 파일을 처음에 명시적으로 추가하기 위해 소스를 변경해야 했습니다.

저는 달리기.npm update을 한

오류가 했습니다: 내부오발습니다했생가.Module did not self-register.

  1. node_modules 폴더를 삭제했습니다.
  2. 뛰었다npm install

잘 작동했습니다.

스내피에게 이런 오류가 있었습니다.노드 11을 사용하고 있었습니다.지원하는 노드 버전을 나열한 Snappy의 NPM 페이지 https://www.npmjs.com/package/snappy 을 확인했습니다.

폴더 node_modules를 삭제하는 입니다.rm -rf node_modules올바른 버전의 노드를 사용하여 다시 설치하면 문제가 해결됩니다.

이 문서를 작성할 당시 Linux에서 지원한 버전 중 하나는 Node 버전 12였습니다.

nvm deactivate 11
nvm uninstall 11
nvm install 12
nvm use 12

문제는 해결됐습니다.


이 문제의 또 다른 원인은 pm2를 사용하는 경우 노드를 업그레이드한 후 pm2를 다시 설치해야 할 수도 있습니다. pm2 없이 합니다.node server.js그런 다음 pm2를 사용합니다.pm2 start server.js.

Node.js 업데이트 후 PM2를 업데이트하는 올바른 방법

C++ 추가 기능을 다시 빌드합니다.

이런 일을 당하신 적이 있습니까?

Module did not self-register: '…\node_modules\@u4\opencv4nodejs\build\Release\opencv4nodejs.node

Node.js를 방금 업데이트한 것 같습니다.Node.js를 업데이트한 후 C++ 추가 기능인 Node.js 패키지를 C++로 작성하여 다시 빌드해야 합니다.

왜죠

기능을 .js의 C++로 됩니다.require-능력이 있는.node현재 설치된 Node.js ABI 라이브러리에 연결되어 있으며 다른 버전과 호환되지 않습니다.패키지는 특정 버전의 Node.js와만 호환되도록 제작되었습니다.

어떻게.

일단 해보세요.npm rebuild 추가 에 C++이 build그들의 들의대로 하다.package.json할 입니다, 충니다합.그렇지 않으면 C++ 네이티브 추가 기능 패키지를 수동으로 빌드해야 합니다.이러한 패키지를 설치할 때 수행한 작업을 다시 수행합니다.패키지를 재구축하려면 패키지 설명서의 빌드 지침을 참조하십시오. 다시.npm install 그들.

0.12와 io.js 1.3.0에서 동일한 문제가 발생하여 Node.js 0.10으로 되돌렸습니다.

저도 같은 문제가 있었습니다.글로벌 참조 스크립트를 참조하는 내 스크립트에 잘못된 참조가 있습니다.저는 그 잘못된 참조를 삭제했고 오류가 사라졌습니다.오류 메시지에 디버그를 더 어렵게 만든 잘못된 참조가 표시되지 않았습니다.하지만 'Uncaught Error: Module don't self-register'라는 메시지를 받았습니다.

이것은 저의 다른 프로젝트에서도 발생합니다.어떤 이유로 문자 중 하나가 대문자인 경우 참조 경로를 인식하지 못합니다.대문자는 경로의 정확한 철자라고 생각했습니다.

저는 싸이프레스 프로젝트를 설정하는 동안 이 문제를 겪었습니다.

사이프레스는 기본적으로 번들 버전(내 경우 버전 8.0)의 노드를 사용하는 반면, 내가 사용하고자 하는 패키지는 노드 버전이 10 이상이어야 하기 때문에 이 문제가 발생했다는 것을 알게 되었습니다.

나는 내 컴퓨터에 노드 12.0을 설치했지만 사이프러스가 사용하지 않았기 때문에 'nodeVersion'의 값을 'system'으로 설정하기 위해 아래 설정 파일(사이프러스.json)에 표시된 줄을 추가해야 했고, 사이프러스가 내 컴퓨터에 설치된 노드 버전을 사용하도록 명시적으로 지시해야 했습니다.

다음 행을 설정 파일에 추가합니다.

**"nodeVersion": "system"**

다른 답변에는 언급되지 않았습니다.

기본 추가 기능이 있는 많은 npm 모듈은 컨텍스트를 인식하지 못하며, 이는 모듈이 다른 컨텍스트(예: worker_threads, electron 또는 고유한 캐시가 필요한 격리된 컨텍스트가 있는 다른 환경)에서 두 번 이상 로드될 수 있는 환경에서 작업하는 경우 문제가 됩니다.

이러한 경우에는 프로젝트에서 수정할 수 있는 것이 아니라 모듈 자체에서 해결해야 합니다.

많은 모듈의 경우 해결책은 매우 작은 것 같습니다. https://github.com/nodejs/node/issues/21783#issuecomment-429637117

다른 사람들에게는 더 관여할 수 있습니다.자세한 내용은 https://github.com/nodejs/node/blob/main/doc/api/addons.md#context-aware-addons 에서 확인할 수 있습니다.

언급URL : https://stackoverflow.com/questions/28486891/uncaught-error-module-did-not-self-register

반응형