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


92

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

Uncaught Error : Module did not self-register. ", 소스 : /home/alexis/Bureau/dev/jukebox/node_modules/vlc/node_modules/ffi/node_modules/bindings/bindings.js (84)

nw-gyp로 몇 가지 명령을 시도했지만 도움이되지 않았습니다. 저는 Ubuntu 14, 64 비트를 사용하고 있습니다.


6
Omar의 답변을 표시해보십시오. 그것은 문제를 해결했습니다.
Ionică Bizău 2015 년

답변:


155

노드를 업그레이드했다면 npm rebuild이 문제를 해결할 수 있습니다.


3
실제로 루트 액세스가 필요하다는 것을 알지 않는 한 sudo 없이 이것을 실행 해야합니다. 전역 적으로 설치된 모듈 (일반적으로 권장되지 않음)을 다루지 않는 한 루트가 필요하지 않습니다.
gfxmonk 2015

8
나를 위해 작동하지만하지 않았 rm -r node_modules다음 npm install 작업 한
Spc_555

1
업그레이드에 국한되지 않고 npm 및 노드를 재설치하는 경우에도 작동합니다.
Kevin

이것은 실제로 질문에 대한 답이 아닙니다. 무엇이 문제입니까? electronJS의 웹 작업자로부터 모듈 'usb'를로드하는 중에이 오류가 발생합니다. 무슨 뜻인지 모르겠네요. 문제가 뭔지 설명해 주 시겠어요?
PeterT


18

다른 제품에서 비슷한 문제가 발생했으며 사용중인 노드의 버전을 변경하는 것이 수정되었습니다. 나는 사용 0.12.0하고 있었고 0.10.26.

개인적으로 NVM 을 사용 하여 노드 버전 변경을 처리합니다. NVM이 설치되어 있으면 실행만큼 간단합니다.

nvm use 0.10.26

또는 기본 버전을 0.10.26으로 설정

nvm alias default 0.10.26

이것이 도움이되기를 바랍니다. 문제는 다른 제품에서 나왔지만 해결책은 동일 할 수 있습니다.


이 수정은 글로벌 패키지를 실행할 때 도움이되었지만 새 노드 버전으로 로컬 패키지를 실행하고 싶었습니다. 전역 명령을 실행할 때 버전을 전환하면됩니다.
Collin Price

9

비슷한 문제가있었습니다.

/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);

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


D : (Y) 당신을 위해 다행
아이온

3

다중 파일 C ++ 애드온을 만들 때 한 번이 문제가 발생했습니다. 내 binding.gyp 파일에는 다음이 있습니다.

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

그리고 내 프로젝트에는 여러 * .cc 파일이 포함되어 있습니다. 그러나 NODE_MODULE () 매크로는 나머지 파일을 가져온 하나의 파일에서만 호출되었습니다. 그러나이 호출됩니다 노드 기대하는 프리스트 소스에 나열된 * .CC 파일. 그래서 처음에 해당 파일을 명시 적으로 추가하기 위해 소스를 변경해야했습니다.


2

나에게는 달리기가 npm update효과가 있었다.


패키지가 오래된 경우에만 가능합니다. 또한 요청한 것보다 다른 일을합니다. npm rebuild또는 rm -rf node_modules && npm i정답입니다.
Albin 2016 년

1

0.12 및 io.js 1.3.0에서 동일한 문제가 발생하여 Node.js 0.10으로 되돌려 문제가 해결되었습니다.


1

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


1
완전한. chown을 사용하여 폴더의 소유권을 변경하고 sudo없이 npm으로 다시 설치했습니다. 효과가있었습니다.
Asheesh

1

나를 위해 npm rebuild또는 npm update작동하지 않았습니다. node_modules폴더 를 제거 npm install하고 다시 설치해야했습니다.


0

나는 같은 문제가 있었다. 전역 참조 스크립트를 참조하는 내 스크립트에 잘못된 참조가 있습니다. 잘못된 참조를 제거하고 오류가 사라졌습니다. 내 오류 메시지에는 특정 잘못된 참조가 표시되지 않아 디버깅이 더 어려워졌습니다. 그러나 'Uncaught Error : Module did not self-register'는 내가받은 메시지였습니다.

이것은 내 다른 프로젝트에서도 발생합니다. 어떤 이유로 문자 중 하나가 대문자이면 참조 경로를 인식하지 못합니다. 생각조차도 대문자는 경로의 올바른 철자였습니다.


-1

나는 또한 같은 문제에 직면하고 있었고 이것은 나를 위해 일했습니다.

node_module /으로 이동하여 다음 명령을 사용하여 nw-gyp 대상을 구성해야합니다.

$ nw-gyp configure --target=0.12.3 

그때

$ nw-gyp build

그리고 이것은 나를 위해 일했습니다. nw-gyp 명령을 찾을 수 없으면 다음을 사용하십시오.

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