2012-03-26 20 views
7

मेरा सर्वर नोड.जेएस, एनपीएम, और सॉकेट.ओ के पहले संस्करण के साथ काम कर रहा था लेकिन अपडेट करने के बाद मुझे सॉकेट.ओ:त्रुटि: मॉड्यूल नहीं मिल सकता है ./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) 

अपग्रेड करने से पहले मेरे पास sode.io के लिए एक symlink था जो node_modules के तहत एक ही नाम के साथ "केंद्रीय रूप से स्थापित" निर्देशिका को इंगित करता है। हाल ही में मैं आदेश जारी करके अपने प्रोजेक्ट के लिए socket.io स्थानीय स्थापित करने की कोशिश की:

npm install socket.io 

जो अपने प्रोजेक्ट में node_modules तहत socket.io रखा। मुझे पहले यह अजीब लगा कि त्रुटि संदेश "./lib/socket.io" कह रहा था, लेकिन जब मैंने इसे देखा तो मैंने पाया कि प्रोजेक्ट/node_modules/socket.io/index.js को सॉकेट की आवश्यकता है। इस तरह:

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

लेकिन कुछ भी नहीं परिवहन को छोड़कर वहाँ है:

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

एक और socket.io निर्देशिका वहाँ होना चाहिए या lib के तहत एक socket.io.js फ़ाइल? Index.js को एक आंतरिक फ़ाइल की आवश्यकता क्यों होगी जो अनुपलब्ध प्रतीत होता है?

संस्करण:

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 /' में 'socket.io.js' सहित कई जेएस फाइलें होनी चाहिए। या कम से कम मेरा करता है (नोड 0.6.5, एनपीएम 1.1.0, socket.io 0.9.2)। –

+0

@ फ़ेलिक्स लोदर - पुष्टि के लिए धन्यवाद। अब मुझे यह पता लगाने की ज़रूरत है कि मुझे उन सभी फाइलें क्यों नहीं मिलीं जो मुझे चाहिए। उद्धरण 'एनपीएम कैश क्लीन' के लिए – ghbarratt

उत्तर

17

मैं अपने ही सवाल का जवाब देने नफरत है, लेकिन मैं चीजों को पाने का संकल्प किया था और वहाँ कोई अन्य उत्तर तो मैं मामले में यह किसी और में मदद कर सकते में यह जोड़ने जा रहा हूँ थे।

फ़ेलिक्स लोदर की टिप्पणी (जिसे मैंने +1 किया) के साथ मैं काफी हद तक निश्चित था कि मुझे npm install socket.io के दौरान सभी फाइलें नहीं मिलीं। मैंने apt-get update/upgrade करने का प्रयास किया, यह सोचकर कि मुझे टैर या कुछ के लिए अपडेट की आवश्यकता हो सकती है, लेकिन परिणाम अभी भी वही थे।

मैं इंस्टॉल आउटपुट में 304 प्रतिक्रिया देख रहा था और उस बिंदु पर आश्चर्य हुआ कि अगर कुछ प्रकार का एनपीएम कैश था जिसे मुझे समाशोधन करने की कोशिश करनी चाहिए। I discovered मैं आदेश के साथ एनपीएम कैश साफ़ कर सकता हूं: npm cache clean। अंततः कैश की सफाई करने से मुझे कोई त्रुटि-समय-रनटाइम समस्या नहीं मिली।

तब मुझे एक त्रुटि संदेश प्राप्त करना शुरू हुआ: make: node-waf: Command not found जो lead me to reinstall node

और उसके बाद, यह काम किया!

+2

+1। यह एक समान समस्या को हल करता है। –

संबंधित मुद्दे