2012-03-26 46 views
7

Tôi đã có máy chủ của mình làm việc với phiên bản trước đó của node.js, npm và socket.io nhưng sau khi cập nhật, tôi đã bắt đầu gặp sự cố với socket.io:Lỗi: Không thể tìm thấy mô-đun './lib/socket.io'

$ node server.js 

node.js:237 
     throw e; // process.nextTick error, or 'error' event on first tick 
      ^
Error: Cannot find module './lib/socket.io' 
    at Function._resolveFilename (module.js:333:15) 
    at Function._load (module.js:280:25) 
    at Module.require (module.js:357:17) 
    at require (module.js:373:17) 
    at Object.<anonymous> (/usr/local/lib/node_modules/socket.io/index.js:8:18) 
    at Module._compile (module.js:444:26) 
    at Object..js (module.js:462:10) 
    at Module.load (module.js:351:32) 
    at Function._load (module.js:309:12) 
    at Module.require (module.js:357:17) 

Trước khi nâng cấp, tôi có một liên kết tượng trưng cho socket.io dưới node_modules trỏ đến thư mục "được cài đặt tập trung" có cùng tên. Gần đây tôi đã thử cài đặt socket.io cục bộ vào dự án của tôi bằng cách đưa ra lệnh:

npm install socket.io 

đặt socket.io dưới node_modules trong dự án của tôi. Ban đầu tôi thấy lạ khi thông báo lỗi nói "./lib/socket.io" nhưng khi tôi nhìn vào nó, tôi thấy rằng project/node_modules/socket.io/index.js đang yêu cầu socket.io như sau:

module.exports = require('./lib/socket.io'); 

Nhưng không có gì là có trừ vận chuyển:

...project/node_modules/socket.io/lib 
$ ll 
total 24 
drwxrwxr-x 3 ghbarratt dev 4096 Mar 26 14:38 . 
drwxrwxr-x 5 ghbarratt dev 4096 Mar 26 15:03 .. 
-rw-rw-r-- 1 ghbarratt dev 10777 Mar 6 16:37 transport.js 
drwxrwxr-x 3 ghbarratt dev 4096 Mar 26 14:38 transports 

Nếu có thư mục socket.io khác hoặc một tập tin socket.io.js dưới lib? Tại sao index.js lại yêu cầu tệp nội bộ bị thiếu?

phiên bản:

node -v 
v0.7.7-pre 

npm -v 
1.1.12 

[email protected] 

Distributor ID: Ubuntu 
Description: Ubuntu 10.10 
Release:  10.10 
Codename:  maverick 
+3

'node_modules/socket.io/lib /' nên có một số tệp JS bên trong nó, bao gồm 'socket.io.js'. Hoặc ít nhất là của tôi (nút 0.6.5, npm 1.1.0, socket.io 0.9.2). –

+0

@Felix Loether - Cảm ơn bạn đã xác nhận. Bây giờ tôi cần phải tìm ra lý do tại sao tôi không nhận được tất cả các tập tin tôi cần phải có. – ghbarratt

Trả lời

17

Tôi ghét phải trả lời câu hỏi của riêng tôi, nhưng tôi đã có được những thứ được giải quyết và không có câu trả lời khác vì vậy tôi sẽ để thêm video này trong trường hợp nó có thể giúp người khác.

Với nhận xét của Felix Loether (tôi đã +1) Tôi khá chắc chắn rằng tôi không nhận được tất cả các tệp tôi cần có trong npm install socket.io. Tôi đã thử làm một apt-get update/upgrade, nghĩ rằng tôi có thể cần một bản cập nhật cho tar hoặc một cái gì đó, nhưng kết quả vẫn như cũ.

Tôi đã nhận thấy một phản hồi 304 trong đầu ra cài đặt và tự hỏi tại thời điểm đó nếu có một số loại bộ nhớ cache npm mà tôi nên thử thanh toán bù trừ. I discovered Tôi có thể xóa cache npm bằng lệnh: npm cache clean. Làm sạch bộ nhớ cache cuối cùng đã cho tôi qua các vấn đề không có lỗi-cho đến khi-thời gian chạy.

Sau đó, tôi bắt đầu nhận được thông báo lỗi: make: node-waf: Command not foundlead me to reinstall node.

Và sau tất cả, nó hoạt động!

+2

+1 để trích dẫn 'npm cache clean'. Điều này giải quyết một vấn đề tương tự. –

Các vấn đề liên quan