2016-04-21 7 views
11

यह SailsJS एप्लिकेशन है जो मेरे कार्यालय मशीन पर काम करता है लेकिन स्थानीय रूप से नहीं, मुझे आश्चर्य है क्यों? स्थानीय रूप से मैं लिनक्स चलाता हूं। कार्यालय मैक में। स्थानीय रूप से मुझेSailsJS 0.11: ENOENT: ऐसी कोई फ़ाइल या निर्देशिका, stat '.../node_modules/.bin/cdl'

Error: ENOENT: no such file or directory, stat '/home/jiewmeng/Dropbox/meclub/node_modules/.bin/cdl' at Error (native) at Object.fs.statSync (fs.js:849:18) at /home/jiewmeng/Dropbox/meclub/node_modules/include-all/index.js:44:12 at Array.forEach (native) at requireAll (/home/jiewmeng/Dropbox/meclub/node_modules/include-all/index.js:40:9) at /home/jiewmeng/Dropbox/meclub/node_modules/include-all/index.js:50:23 at Array.forEach (native) at requireAll (/home/jiewmeng/Dropbox/meclub/node_modules/include-all/index.js:40:9) at buildDictionary (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/sails-build-dictionary/index.js:68:14) at Function.module.exports.optional (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/sails-build-dictionary/index.js:160:9) at Array.async.auto.nodeModulesFolder (/home/jiewmeng/Dropbox/meclub/node_modules/sails/lib/hooks/moduleloader/index.js:379:27) at /home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:484:38 at _each (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:46:13) at Object.async.auto (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:455:9) at Hook.loadUserHooks (/home/jiewmeng/Dropbox/meclub/node_modules/sails/lib/hooks/moduleloader/index.js:363:13) at Hook.bound [as loadUserHooks] (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/lodash/dist/lodash.js:729:21) at Hook.initialize (/home/jiewmeng/Dropbox/meclub/node_modules/sails/lib/hooks/userhooks/index.js:29:18) at Hook.bound [as initialize] (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/lodash/dist/lodash.js:729:21) at /home/jiewmeng/Dropbox/meclub/node_modules/sails/lib/hooks/index.js:75:14 at /home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:451:17 at /home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:441:17 at _each (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:46:13) at Immediate.taskComplete (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:440:13) at processImmediate [as _immediateCallback] (timers.js:374:17)

मैं Sails 0.11 का उपयोग कर रहा हूं। सर्वर वास्तव में Sails 0.12 से शुरू हो सकता है लेकिन कुछ तोड़ने वाले बदलाव हैं, इस प्रकार मैं अब 0.11 से फंस गया हूं। मैं Node 4 का उपयोग कर रहा हूँ।

+0

कुछ मॉड्यूल हो सकते हैं जो ओएस-विशिष्ट हैं, इसलिए यदि कोई मॉड्यूल है जिसे आप * npm इंस्टॉल करते समय संकलित करते हैं ... * यह अन्य ओएस – Molda

उत्तर

7

मैं तुम्हें ड्रॉपबॉक्स उपयोग कर रहे हैं अपने मशीन, जिसकी वजह से कुछ फ़ाइलों को अपनी परियोजना जो एक ओएस में समस्या नहीं आएगी, लेकिन अन्य में इस मुद्दे को बना सकते हैं में जोड़ा जा रहा है के साथ कार्यालय लैपटॉप सिंक करने के लिए लगता है।

इस प्रकार, मेरा सुझाव है कि आप परियोजना

  1. उपयोग Git या bitbucket परियोजना क्लोन करने के लिए क्लोन करने के लिए मानक प्रथाओं का पालन करना चाहिए।
  2. निर्भरता स्थापित => NPM स्थापित

परियोजना सिंक के लिए ड्रॉपबॉक्स का उपयोग न करें। कोड को क्लोन/खींचने के लिए संस्करण नियंत्रण प्रणाली का उपयोग करें, और सभी निर्भरताओं को स्थापित करें

because node-gyp compiles native add-on modules for Node.js with respect to OS

और उम्मीद है कि इसके बाद इसे ठीक काम करना चाहिए।

आप VCS उपयोग करने के लिए नहीं करना चाहते हैं तो नीचे दिए चरणों का पालन कर सकते:

# cd /home/jiewmeng/Dropbox/meclub 
# sudo rm -rf node_modules 
# rm -rf ~/.npm 
# npm cache clear 
# npm install 

तुम सब करने की जरूरत है यही कारण है कि।

+0

में संगत नहीं हो सकता है (इसलिए यह नहीं मिला है) मेरे लिए मैंने कोशिश की 'rm -rf node_modules/* 'कई बार। ड्रॉपबॉक्स 'node_modules' फ़ोल्डर को सिंक नहीं करता है। लेकिन मेरे लिए कुंजी यह है कि मुझे 'rm -rf/node_modules/.npm' करना था, किसी भी तरह से इसे पहले 'rm' कमांड से नहीं हटाया गया था। हो सकता है कि छुपा फ़ोल्डर्स –

+0

@JiewMeng हाँ, क्योंकि .npm एक फ़ोल्डर है और उस फ़ोल्डर को हटाने के लिए जिसे आप निकालने वाले बल का उपयोग करने के लिए जरूरी है, यह केवल आरएम के साथ काम नहीं कर रहा है। –

5

यदि आप एक नई मशीन पर जा रहे हैं तो आपको अपने node_modules को पुनर्निर्माण करने की आवश्यकता है। आप इसे इस तरह कर सकते हैं:

cd /home/jiewmeng/Dropbox/meclub 
rm -rf node_modules 
npm install 

कारण है कि यह आवश्यक है कि .bin फ़ोल्डर symlinks से भरा हुआ है। यह संभवतः ड्रॉपबॉक्स के साथ मुद्दों का कारण बन जाएगा। इसके अलावा, .bin फ़ोल्डर में संसाधन कभी-कभी मूल रूप से संकलित किए जाते हैं। बिना किसी संकलन के उबंटू से मैक ओएसएक्स तक चलना, कई घटकों के लिए रनटाइम पर एक मुद्दा होगा।

बस वीसीएस के साथ, मैं अनुशंसा करता हूं कि आप node_modules फ़ोल्डर को सिंक न करें। यह मशीनों के बीच साझा नहीं किया जाना चाहिए। आप प्रत्येक कंप्यूटर पर एनपीएम का उपयोग करके इन निर्भरताओं का प्रबंधन कर सकते हैं।

2
  1. सुनिश्चित करें कि आप सही निर्देशिका से पाल चल रहे हैं, sails lift का उपयोग कर या जो भी आप
  2. का उपयोग सुनिश्चित करें कि सभी मॉड्यूल
  3. स्थापित कर रहे हैं मैन्युअल रूप से पैकेज में सभी मॉड्यूल अगर जाँच करने के लिए एक npm install करते हैं।
  4. कोशिश फिर से स्थापित करने के पाल और नोड में - json अपने node_modules फ़ोल्डर में उपलब्ध
  5. सुनिश्चित करें कि नोड के संस्करणों दोनों में एक ही है (ज्यादातर मामलों में यह एक समस्या है, भले ही नहीं नहीं होना चाहिए) कर रहे हैं सबसे खराब मामला।
+0

कृपया हमें बताएं कि क्या कोई समाधान काम करता है –

5

आपको पूरे node_modules निर्देशिका को हटाने की आवश्यकता नहीं है। बस npm rebuild चलाएं और यदि यह आपके वर्तमान आर्किटेक्चर से मेल नहीं खाता है तो यह मॉड्यूल का पुनर्निर्माण करेगा।

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