Uncaught Error: โมดูลไม่ได้ลงทะเบียนด้วยตนเอง


92

ฉันพยายามใช้ node-vlc กับ nw.js (v0.12.0-alpha2) เมื่อฉันเปิดแอปโดยไม่มี nw.js มันใช้งานได้ แต่เมื่อฉันเปิดด้วย nw.js ฉันได้รับข้อผิดพลาด:

Uncaught Error: โมดูลไม่ได้ลงทะเบียนด้วยตนเอง ", ที่มา: /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

คำตอบ:


155

หากคุณอัปเกรดโหนดแล้วnpm rebuildอาจแก้ไขปัญหานี้ให้คุณได้


3
คุณควรรันสิ่งนี้โดยไม่ใช้ sudo อย่างแน่นอนเว้นแต่คุณจะรู้ว่าคุณต้องการการเข้าถึงรูทจริงๆ คุณไม่ควรใช้รูทเว้นแต่คุณจะจัดการกับโมดูลที่ติดตั้งทั่วโลก (ซึ่งโดยทั่วไปไม่แนะนำ)
gfxmonk

8
ไม่ได้ทำงานให้ฉัน แต่rm -r node_modulesแล้วnpm install ก็ทำงาน
Spc_555

1
ไม่ จำกัด เฉพาะการอัปเกรดเท่านั้นยังใช้งานได้ในกรณีที่ติดตั้ง npm และ node ใหม่อีกด้วย
Kevin

นี่ตอบคำถามไม่ได้จริงๆ อะไรคือปัญหา? ฉันได้รับข้อผิดพลาดนี้ในการโหลดโมดูล 'usb' จากผู้ปฏิบัติงานเว็บใน electronJS ไม่รู้ว่ามันหมายถึงอะไรคุณอธิบายได้ไหมว่าปัญหาคืออะไร?
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

9

ฉันมีปัญหาที่คล้ายกัน

/Users/user/NodeAddons/bridge/node_modules/bindings/bindings.js:83 ข้อผิดพลาด: โมดูลไม่ได้ลงทะเบียนด้วยตนเอง

ในกรณีของฉันฉันกำลังทำ C / C ++ Add-on และฉันลืมที่จะส่งออกส่วนเสริมใน main.cc ของฉันไม่มีรหัสด้านล่าง:

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

NODE_MODULE(method, Init);

หวังว่านี่จะช่วยคนอื่น ๆ ! ขอบคุณ :)


ดีใจแทนคุณ (Y): D
Aion

3

ฉันเคยมีปัญหานี้ครั้งหนึ่งเมื่อสร้างโปรแกรมเสริม c ++ หลายไฟล์ ในไฟล์ binding.gyp ของฉันฉันมี:

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

และโครงการของฉันมีไฟล์ * .cc หลายไฟล์ อย่างไรก็ตามมาโคร NODE_MODULE () ถูกเรียกใช้ในไฟล์เดียวเท่านั้นที่นำเข้าไฟล์ที่เหลือ แต่โหนดคาดว่าจะถูกเรียกในไฟล์frist * .cc ที่แสดงรายการในแหล่งที่มา ดังนั้นฉันจึงต้องเปลี่ยนแหล่งที่มาเพื่อเพิ่มไฟล์นั้นไปที่จุดเริ่มต้นอย่างชัดเจน


2

สำหรับฉันการวิ่งnpm updateได้ผล


สามารถทำได้ แต่เฉพาะในกรณีที่แพ็กเกจล้าสมัย มันยังทำอย่างอื่นนอกเหนือจากที่ขออีกด้วย npm rebuildหรือrm -rf node_modules && npm iเป็นคำตอบที่ถูกต้อง
Albin

1

ฉันมีปัญหาเดียวกันนี้กับ 0.12 และ io.js 1.3.0 การเปลี่ยนกลับเป็น Node.js 0.10 แก้ไขปัญหาได้


1

ฉันเพิ่มปัญหาเดียวกันนี้เนื่องจากฉันติดตั้งลงในโมดูลเป็น sudo ... การลบโฟลเดอร์โมดูลโหนดและติดตั้งใหม่ตามที่ผู้ใช้ทั่วไปแก้ไข


1
สมบูรณ์แบบ. ฉันเปลี่ยนความเป็นเจ้าของโฟลเดอร์โดยใช้ chown และติดตั้งใหม่ด้วย npm โดยไม่มี sudo มันได้ผล
Asheesh

1

สำหรับฉันnpm rebuildหรือnpm updateไม่ได้ผล ฉันต้องลบnode_modulesโฟลเดอร์และเรียกใช้npm installเพื่อติดตั้งอีกครั้ง


0

ผมมีปัญหาเหมือนกัน. สคริปต์ของฉันที่อ้างถึงสคริปต์อ้างอิงส่วนกลางมีการอ้างอิงที่ไม่ถูกต้อง ฉันลบข้อมูลอ้างอิงที่ไม่ถูกต้องออกและข้อผิดพลาดก็หายไป ข้อความแสดงข้อผิดพลาดของฉันไม่มีข้อบ่งชี้ถึงการอ้างอิงที่ไม่ถูกต้องซึ่งทำให้การดีบักทำได้ยากขึ้น แต่ 'Uncaught Error: Module ไม่ได้ลงทะเบียนด้วยตนเอง' เป็นข้อความที่ฉันได้รับ

สิ่งนี้เกิดขึ้นในโครงการอื่นของฉันด้วย ด้วยเหตุผลบางประการมันจะไม่รู้จักเส้นทางอ้างอิงหากอักขระตัวใดตัวหนึ่งเป็นตัวพิมพ์ใหญ่ แม้จะคิดว่าตัวพิมพ์ใหญ่คือตัวสะกดที่ถูกต้องของเส้นทาง


-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.