2014-12-30 8 views
5

gut funktioniert, das stinkt, hier ist die Schaufel:stapeln MEAN auf 14,04 Ubuntu hielt plötzlich

Ich bin ein Freund der Arbeit an einem Website-Projekt mit dem MEAN Stapel (mongodb, Express-, Winkel- und NodeJS) helfen, ich bin Ubuntu 14.04. Ich bin ziemlich versiert mit Linux und ich bin ein erfahrener Webentwickler, aber die meiste Erfahrung habe ich mit LAMP Stack. Mir ist es gut gelungen, dieses MEAN-Stack-Projekt bis heute Abend zu spielen. Mein Freund ist heute Abend wieder in die Entwicklung gegangen und ich half ihnen, ihre Node-Env auf dem Mac zu aktualisieren (sie machen meistens Front-End-HTML/CSS und ich mache Full-Stack), indem sie npm update ausführt und das Projekt funktioniert gut. Als ich feststellte, dass ich meine Knotenumgebung genauso auffrischen könnte, um aktueller zu sein, habe ich dasselbe versucht:

Ich habe versucht, meine Node - und Npm - Umgebung zu aktualisieren, da es schon ein paar Monate her ist (ich weiß es schlecht, ich vermasselte, ich gebe es zu), ich glaube, ich benutzte Node.js v 0.3.2.etwas, dachte nicht daran, Versionsnummern zu überprüfen, bevor dieses Chaos folgte. Aber jetzt bekomme ich verrückte Sätze von zufälligen Fehlern, nicht erfüllten Abhängigkeiten, ich kann die nicht erfüllten Abhängigkeiten nicht lösen, indem ich npm install benutze, um sie zu holen, und ich kann nicht grunzen, den Dev-Server zu starten, ich habe versucht Knoten zu entfernen und npm und neu installieren (jetzt läuft nodejs 0.10.25) haben apt-get update, apt-get installieren nodejs, apt-get installieren nodejs-dev, npm update, npm installieren, etc., aber ohne Erfolg ausgeführt.

Ich bin darüber hinaus fest und darüber hinaus frustriert, bitte helfen! Hier ist eine Auswahl von einigen der Fehler/fehlende Abhängigkeiten Ich erhalte:

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 

und wenn ich versuche, und führen Sie sudo grunzen, bekomme ich diese:

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) 

Wie peinlich. Jede Hilfe oder Einsicht, wie ich meine Nodejs-Umgebung entziffern kann, wäre sehr hilfreich, weil ich mir gerade die Haare ausreiße. Danke im Voraus!

+0

Können Sie Ihre package.json verknüpfen? – Baart

Antwort

5

Also erstmal, es tut mir leid, dass du in dieses Chaos geraten bist. Ein Teil des Grundes ist ein Fehler in npm update - update nicht semantische Versionierung respektieren - aber leider ist es noch nicht behoben worden und hält beißen Menschen. Als Ergebnis sollte niemand npm update und vor allem nie npm update -g laufen.

Auch die offiziellen Debian/Ubuntu-Pakete verzögern die aktuellen Versionen ein wenig, und es gibt einige fiese Race-Bedingungen während npm install in der node Sie von Debian bekommen. Zum Glück gibt es von NodeSource bereitgestellt Pakete < 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

Das sollten Sie sich die neueste node, 0.10.35 bekommen.

aktualisieren Dann npm

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

Das sollten Sie sich die neueste npm, 2.1.17 (oder höher) erhalten.

Jetzt, um Ihr Projekt wiederherzustellen. Zuerst würde ich node_modules wegblasen und eine npm install ausführen. Wenn Sie dabei Fehler bekommen, posten Sie bitte die komplette npm-debug.log-Datei als Gist https://gist.github.com und fügen Sie den Link hier hinzu.

Sie müssen möglicherweise auf die globalen Pakete bower und grunt-cli, um die in Ihrer PATH neu installieren müssen:

sudo npm i -g bower grunt-cli

Eine Sache beachten über npm, dass alle Pakete nicht installiert werden fast ist -global; Installieren Sie ein Paket nur dann global, wenn Sie es in der Befehlszeile PATH möchten.

+0

DANKE! DANKE! DANKE! Ich werde hier ein paar leichte Tippfehlerkorrekturen hinzufügen: auf Ubuntu, als ich versuchte, 'sudo apt-get install -y nodejs nodejs-legacy' auszuführen, mochte es das nodejs-Vermächtnis nicht, also ließ ich das fallen, Knoten -v zeigt jetzt 10.35 , Habe ich versucht, die 'sudo install -g npm @ neuesten', aber das ist kein gültiger Befehl? Mein npm ist bei v 1.4.28 aber funktioniert gut. Ich habe Bower und Grunt neu installiert, die node_module gelöscht und 'npm install' ausgeführt und ALLES FUNKTIONIERT JETZT! Vielen Dank, lieber Herr! Ich schätze es wirklich sehr! : D – hypervisor666

+1

Sorry ich meinte 'npm installieren -g npm @ neuesten '. Freut mich, dass es funktioniert hat. –