2014-12-30 34 views
5

好了,這很臭,這裏的獨家新聞:MEAN堆棧在Ubuntu 14.04突然停止工作

我使用MEAN堆棧(MongoDB的,快遞,角度和的NodeJS)幫助一個網站項目的朋友的工作,我我正在運行Ubuntu 14.04。我對Linux非常瞭解,而且我是一名經驗豐富的Web開發人員,但我的大部分經驗都是使用LAMP堆棧。直到今天晚上,我一直在做這個MEAN棧項目的工作。我的朋友跳回到今天晚上的發展,我幫助他們刷新他們在Mac上的節點env(他們大多做前端HTML/CSS,我做全堆棧)通過運行npm更新和該項目工作正常他們的比較。我認爲我可以輕鬆地刷新我的節點環境,使其成爲最新的我嘗試了同樣的事情:

我試圖更新我的節點和npm環境,因爲它已經過了幾個月了(我知道它不好,我搞砸了,我承認它),我想我使用的是Node.js v 0.3.2.something,沒想到在這個混亂髮生之前檢查版本號。但是現在我變得瘋狂的隨機錯誤集,未滿足的依賴關係,我無法通過使用npm install來獲取它們來解決未滿足的依賴關係,並且我無法得到grunt來啓動dev服務器,我嘗試刪除節點和npm並重新安裝(現在運行nodejs 0.10.25)已經運行apt-get update,apt-get install nodejs,apt-get install nodejs-dev,npm update,npm install等,但無濟於事。

我無法堅持和超越沮喪,請幫助!下面是一些錯誤的採樣/缺少依賴我越來越:

module.js:340 
throw err; 
    ^
Error: Cannot find module './helpers' 
at Function.Module._resolveFilename (module.js:338:15) 
at Function.Module._load (module.js:280:25) 
at Module.require (module.js:364:17) 
at require (module.js:380:17) 
at Object.<anonymous>    
at Module._compile (module.js:456:26) 
at Object.Module._extensions..js (module.js:474:10) 
at Module.load (module.js:356:32) 
at Function.Module._load (module.js:312:12) 
at Module.require (module.js:364:17) 
npm ERR! weird error 8 
npm WARN This failure might be due to the use of legacy binary "node" 
npm WARN For further explanations, please read 
/usr/share/doc/nodejs/README.Debian 
npm ERR! not ok code 0 

,當我嘗試和運行sudo的呼嚕聲,我得到這個:

Loading "jshint.js" tasks...ERROR 
>> Error: Cannot find module './name-stack.js' 
Loading "grunt-karma.js" tasks...ERROR 
>> Error: Cannot find module 'depd' 
Warning: Task "jshint" not found. Used --force, continuing. 

Running "concurrent:default" (concurrent) task 
Loading "jshint.js" tasks...ERROR 
>> Error: Cannot find module './name-stack.js' 
Loading "jshint.js" tasks...ERROR 
>> Error: Cannot find module './name-stack.js' 
Loading "grunt-karma.js" tasks...ERROR 
Loading "grunt-karma.js" tasks...ERROR 
>> Error: Cannot find module 'depd' 
>> Error: Cannot find module 'depd' 

[Error:   /home/user/Projects/detrashed/node_modules/mongoose/node_modules/mongodb/node_modules/bson/build/Release/bson.node: invalid ELF header] 
js-bson: Failed to load c++ bson extension, using pure JS version 
[Error: /home/user/Projects/detrashed/node_modules/connect- mongo/node_modules/mongodb/node_modules/bson/build/Release/bson.node: invalid ELF header] 
js-bson: Failed to load c++ bson extension, using pure JS version 

module.js:340 
throw err; 
    ^
Error: Cannot find module './collection/batch/unordered' 
    at Function.Module._resolveFilename (module.js:338:15) 
    at Function.Module._load (module.js:280:25) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at Object.<anonymous> (/home/user/Projects/detrashed/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/collection.js:21:17) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 

多麼尷尬。任何關於如何解除我的nodejs環境的幫助或見解都會非常有幫助,因爲我即將把我的頭髮拉出來。提前致謝!

+0

你能鏈接你的package.json嗎? – Baart

回答

5

所以首先,我很抱歉你陷入了這個爛攤子。其中一部分原因是npm update中的一個錯誤 - update不尊重語義版本控制 - 但不幸的是它還沒有被修復,並且一直在咬人。因此,沒有人應該運行npm update,特別是從不運行npm update -g

此外,官方的Debian/Ubuntu軟件包滯後於目前的版本,並且在從Debian獲得的nodenpm install期間存在一些令人討厭的競爭條件。幸運的是有由NodeSource < https://github.com/nodesource/distributions#usage-instructions>

sudo apt-get --purge remove nodejs nodejs-legacy curl -sL https://deb.nodesource.com/setup | sudo bash - sudo apt-get install -y nodejs nodejs-legacy node -v

提供的軟件包這應該讓你最新的node,0.10.35。

然後更新npm

sudo npm install -g [email protected] npm -v

這應該讓你最新的npm,2.1.17(或更高版本)。

現在恢復您的項目。首先,我會吹走node_modules並運行一個npm install。如果您從中得到任何錯誤,請將完整的npm-debug.log文件作爲要點https://gist.github.com發佈,並在此處添加鏈接。

您可能需要以有那些在你的路徑重新安裝全局包bowergrunt-cli

sudo npm i -g bower grunt-cli

有一點需要注意npm的是,幾乎所有的軟件包將被安裝的非 - 全球;只有在命令行PATH中需要時纔可以全局安裝軟件包。

+0

謝謝!謝謝!謝謝!我會在這裏添加一些輕微的拼寫錯誤修正:在Ubuntu上,當我嘗試運行'sudo apt-get install -y nodejs nodejs-legacy'時,它不喜歡nodejs-legacy,所以我放棄了這一點,node -v現在顯示10.35 ,我嘗試了'sudo install -g npm @ latest',但這不是一個有效的命令?我的npm v 1.4.28,但工作正常。我重新安裝了bower和grunt,刪除了node_modules並重新運行'npm install'並且它現在一切正常!非常感謝你的親切先生!我真的很感激它! :D – hypervisor666

+1

對不起,我的意思是'npm install -g npm @ latest'。真高興你做到了。 –