Lỗi chưa xảy ra: Mô-đun không tự đăng ký


92

Tôi cố gắng sử dụng node-vlc với nw.js (v0.12.0-alpha2). Khi tôi khởi chạy ứng dụng của mình mà không có nw.js, nó hoạt động, nhưng khi tôi khởi chạy nó với nw.js, tôi đã gặp lỗi:

Lỗi chưa xảy ra: Mô-đun không tự đăng ký. ", Nguồn: /home/alexis/Bureau/dev/jukebox/node_modules/vlc/node_modules/ffi/node_modules/bindings/bindings.js (84)

Tôi đã thử một số lệnh với nw-gyp nhưng nó không thể giúp tôi. Tôi đang sử dụng Ubuntu 14, 64-bit.


6
Hãy cân nhắc đánh dấu câu trả lời của Omar. Điều đó đã giải quyết được vấn đề.
Ionică Bizău

Câu trả lời:


154

Nếu bạn đã nâng cấp nút thì npm rebuildcó thể sửa lỗi này cho bạn


3
Bạn chắc chắn nên chạy điều này mà không cần sudo trừ khi bạn biết bạn thực sự cần quyền truy cập root. Bạn không cần root trừ khi đang xử lý các mô-đun được cài đặt toàn cầu (thường không được khuyến khích).
gfxmonk

8
Không làm việc cho tôi, nhưng rm -r node_modulessau đó npm install đã làm các công việc
Spc_555

1
Không chỉ giới hạn nâng cấp, cũng làm việc trong trường hợp cài đặt lại NPM và nút vv
Kevin

Điều này không thực sự trả lời câu hỏi. Vấn đề là gì? Tôi gặp lỗi này khi tải mô-đun 'usb' từ một nhân viên web trong electronJS. Không hiểu nó có nghĩa là gì, bạn có thể giải thích vấn đề là gì không?
PeterT


17

Tôi đã gặp sự cố tương tự với một sản phẩm khác và cách khắc phục của tôi là thay đổi phiên bản nút mà tôi đang sử dụng. Tôi đã sử dụng 0.12.0và đổi lại thành 0.10.26.

Cá nhân tôi sử dụng NVM để xử lý việc thay đổi phiên bản nút. Với NVM được cài đặt, nó đơn giản như chạy

nvm use 0.10.26

Hoặc đặt phiên bản mặc định thành 0.10.26

nvm alias default 0.10.26

Hy vọng rằng điều này sẽ giúp bạn - các vấn đề của chúng tôi đến từ các sản phẩm khác nhau nhưng giải pháp có thể giống nhau.


Bản sửa lỗi này đã giúp tôi khi tôi đang thực thi các gói toàn cầu nhưng muốn chạy các gói cục bộ với phiên bản nút mới. Chỉ phải chuyển đổi phiên bản khi tôi chạy các lệnh toàn cục.
Giá Collin

9

Tôi đã có vấn đề tương tự.

/Users/user/NodeAddons/bridge/node_modules/bindings/bindings.js:83 Lỗi: Mô-đun không tự đăng ký.

Trong trường hợp của tôi, tôi đang tạo Tiện ích bổ sung C / C ++ và tôi đã quên xuất tiện ích bổ sung, trong main.cc của tôi bị thiếu mã bên dưới:

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

NODE_MODULE(method, Init);

Hy vọng điều này sẽ giúp những người khác! Cảm ơn :)


Rất vui cho bạn (Y): D
Aion

3

Tôi đã từng gặp sự cố này khi tạo một addon c ++ nhiều tệp. Trong tệp bind.gyp của tôi, tôi có:

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

Và dự án của tôi chứa một số tệp * .cc. Tuy nhiên, macro NODE_MODULE () chỉ được gọi trên một tệp đã nhập phần còn lại của tệp. Nhưng nút mong đợi rằng nó được gọi trên tệp frist * .cc được liệt kê trong các nguồn. Vì vậy, tôi đã phải thay đổi nguồn để thêm tệp đó vào đầu một cách rõ ràng


2

Đối với tôi, chạy có npm updatehiệu quả


Nó có thể, nhưng chỉ khi gói đã lỗi thời. Nó cũng làm điều gì đó khác với yêu cầu. npm rebuildhoặc rm -rf node_modules && npm ilà câu trả lời chính xác.
Albin

1

Tôi gặp sự cố tương tự với 0.12 và io.js 1.3.0, việc hoàn nguyên về Node.js 0.10 đã khắc phục được sự cố.


1

Tôi đã thêm vấn đề tương tự vì tôi đã cài đặt vào mô-đun dưới dạng sudo ... Việc xóa thư mục mô-đun nút và cài đặt lại như người dùng bình thường đã khắc phục sự cố.


1
Hoàn hảo. Tôi đã thay đổi quyền sở hữu của thư mục bằng cách sử dụng chown và được cài đặt lại bằng npm mà không có sudo. Nó đã làm việc.
Asheesh

1

Đối với tôi npm rebuildhoặc npm updatekhông hoạt động. Tôi đã phải xóa node_modulesthư mục và chạy npm installđể cài đặt lại chúng.


0

Tôi đã từng gặp vấn đề tương tự. Tập lệnh của tôi tham chiếu đến tập lệnh tham chiếu chung có tham chiếu không hợp lệ. Tôi đã gỡ bỏ tham chiếu không hợp lệ đó và lỗi đã biến mất. Thông báo lỗi của tôi không có dấu hiệu về tham chiếu không hợp lệ cụ thể đó khiến việc gỡ lỗi khó hơn. Nhưng 'Lỗi chưa được ghi nhận: Mô-đun không tự đăng ký' là thông báo tôi nhận được.

Điều này cũng xảy ra trong dự án khác của tôi. Vì một số lý do, nó sẽ không nhận ra đường dẫn tham chiếu nếu một trong các ký tự là chữ hoa. Thậm chí người ta còn nghĩ rằng, cách viết hoa trên là cách viết đúng của đường dẫn.


-1

tôi cũng đang đối mặt với vấn đề tương tự và vấn đề này phù hợp với tôi.

bạn cần vào node_module / và định cấu hình mục tiêu nw-gyp bằng lệnh sau

$ nw-gyp configure --target=0.12.3 

sau đó

$ nw-gyp build

và điều này đã làm việc cho tôi. Nếu bạn không tìm thấy lệnh nw-gyp thì hãy sử dụng

npm install nw-gyp
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.