Frage

Ich versuche jsdom so zu installieren:

$ sudo npm install -g jsdom
# OR
$ sudo npm install    jsdom

Nach einem erfolgreichen Befehl schlägt die Installation schnell fehl, wobei die erste Fehlermeldung nach dem [....] :

$ sudo npm install jsdom 
npm http GET https://registry.npmjs.org/jsdom
npm http 304 https://registry.npmjs.org/jsdom
[....]

> contextify@0.1.7 install /home/yug/Desktop/QGis/WikiAtlas/1_shaded_relief/test/node_modules/jsdom/node_modules/contextify
> node-gyp rebuild

gyp: /home/yug/.node-gyp/0.10.25/common.gypi not found (cwd: /home/yug/Desktop/QGis/WikiAtlas/1_shaded_relief/test/node_modules/jsdom/node_modules/contextify) while reading includes of binding.gyp
gyp ERR! configure error 
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:337:16)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:797:12)
gyp ERR! System Linux 3.8.0-35-generic
gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/yug/Desktop/QGis/WikiAtlas/1_shaded_relief/test/node_modules/jsdom/node_modules/contextify
gyp ERR! node -v v0.10.25
gyp ERR! node-gyp -v v0.12.2
gyp ERR! not ok 
npm http 304 https://registry.npmjs.org/domhandler
npm http 304 https://registry.npmjs.org/domelementtype
npm ERR! contextify@0.1.7 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the contextify@0.1.7 install script.
npm ERR! This is most likely a problem with the contextify package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls contextify
npm ERR! There is likely additional logging output above.

npm ERR! System Linux 3.8.0-35-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "jsdom"
npm ERR! cwd /home/yug/Desktop/QGis/WikiAtlas/1_shaded_relief/test
npm ERR! node -v v0.10.25
npm ERR! npm -v 1.3.24
npm ERR! code ELIFECYCLE

npm http 304 https://registry.npmjs.org/qs
npm http 304 https://registry.npmjs.org/entities
....

Hinweis?Dieser Fehler tritt auch bei anderen Modulen auf :

 $sudo npm install -g topojson 
 #bug with `contextify@0.1.7 install` error as well.

enter image description here

Wie kann ich das beheben?


Bearbeiten: Ich habe es versucht sudo apt-get remove --purge nodejs npm topojson dann Neuinstallation über verschiedene Wege. Auch wenn nodejs die Neuinstallation ist erfolgreich, der Fehler bleibt bestehen, also denke ich, es ist eher kontextabhängig (node.gyp ? cwd ?...).Methoden zum Entfernen / Neuinstallieren ausprobiert :

War es hilfreich?

Lösung 2

Anscheinend habe ich einen Weg gefunden, indem ich alle knotenbezogenen Dateien und Ordner auf meinem Computer sorgfältig gelöscht habe.

0.Kontext: Ich habe zuvor mehrere erfolglose Konsolenbereinigungen durchgeführt, mit

sudo apt-get remove --purge nodejs npm topojson

gefolgt von ~ 3 verschiedenen Möglichkeiten zur Neuinstallation nodejs.Ich habe JEDEN Weg ausprobiert, von der Bereinigung bis zur Neuinstallation, zwischen 2 und 4 Mal.

1.Terminalspülung: Lass uns zuerst mein Chaos auf die tiefstmögliche Weise aufräumen:

npm cache clean; bower cache clean; grunt clean;
sudo apt-get remove --purge nodejs npm topojson

Aber das ist mir gerade aufgefallen diese Tiefenbereinigung löscht / löscht installierte Knotenmodule NICHT, die hartnäckig bleiben.

2.Handspülung: Außerdem habe ich die Spülung mit einer Handspülung für beide weiter vorangetrieben nodejs und node_modules.Ich suchte nach ALLER zugehörige Ordner auf meinem Computer, näher am Stammverzeichnis (ubuntu: /home/<user>/) Best.Ich habe darauf geachtet, alle zuvor installierten globalen zu löschen .../node-modules/ ordner, ohne lokale Module zu löschen (bestimmte lokale Installationen, die noch funktionierten).

3.Installieren: Dann erlaubten die folgenden Konsolen eine saubere Neuinstallation:

sudo apt-get update
sudo apt-get install python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

sudo npm install -g topojson jsdom

Danach meine Dateikonvertierung über das npm-Modul topojson (abhängig von sich selbst jsdom) adaequat :

cd /myfolder/
topojson -o output.topo.json input.geo.json   

4.Schlussfolgerung: Ich kann nicht erkennen warum, welche Datei- / Ordnerlöschung das erfolgreiche erlaubt hat sudo apt-get install nodejs + sudo npm install -g topojson installieren.Aber diese gründliche Bereinigung per Maus und rekursives Entfernen sudo rm -r [node related folder/file] definitiv meine Situation entriegelt.

/!\ Sein sehr vorsichtig mit dem rm -r rekursives Entfernen. /!\

Andere Tipps

Wie Sie aus den Kommentaren erfahren, ist dies ein sehr häufiges Problem.So häufig, dass die Autoren von jsdom es direkt in der README-Datei für das Git-Repository des Projekts dokumentiert haben.


TL; DR

Sie müssen einen C ++ - Compiler und Python2.7 auf Ihrem Computer installiert haben, um zu installieren kontextifizieren das ist eine Abhängigkeit von jsdom.Andernfalls schlägt die jsdom-Installation fehl.


Aus der README auf der Github-Seite für jsdom:

Kontextifizieren

Contextify ist eine Abhängigkeit von jsdom, die zum Ausführen verwendet wird <script> tags innerhalb der Seite.Mit anderen Worten, es erlaubt jsdom, das im Knoten ausgeführt wird.js, um JavaScript-Zeichenfolgen in einer isolierten Umgebung auszuführen, die vorgibt, eine Browserumgebung anstelle eines Servers zu sein.Sie können sehen, wie dies ein wichtiges Merkmal ist.

Leider erfordert diese Art von Magie C ++.Und im Knoten.js, die Verwendung von C ++ aus JavaScript bedeutet die Verwendung von "nativen Modulen"." Native Module werden bei der Installation so kompiliert, dass sie genau für Ihre Maschine funktionieren;das heißt, Sie laden keine Contextify-Binärdatei von npm herunter, sondern erstellen eine lokal, nachdem Sie die Quelle von npm heruntergeladen haben.

Leider kann es schwierig sein, C ++ im Installationssystem von npm zu kompilieren, insbesondere für Windows-Benutzer.Daher ist eines der häufigsten Probleme mit jsdom der Versuch, es zu verwenden, ohne dass die richtigen Kompilierungstools installiert sind.Folgendes benötigen Sie, um Contextify zu kompilieren und damit jsdom zu installieren:

Windows

  • Eine aktuelle Kopie der x86-Version von Node.js für Windows, nicht die x64-Version.
  • Eine Kopie von Visual C ++ 2010 Express.
  • Eine Kopie von Python 2.7, installiert am Standardspeicherort von C:\Python27 .

Es gibt einige geringfügige Änderungen daran, die funktionieren können;zum Beispiel funktionieren normalerweise Vollversionen von Visual Studio, und manchmal können Sie sogar eine x64-Version von Node erhalten.js arbeitet auch.Aber es ist schwierig, also fang mit den Grundlagen an!

Mac

  • XCode muss installiert sein
  • "Befehlszeilentools für XCode" müssen installiert sein
  • Starten Sie XCode einmal, um die Lizenz usw. zu akzeptieren.und stellen Sie sicher, dass es ordnungsgemäß installiert ist

Linux

Sie benötigen verschiedene Build-Tools wie make, Python 2.7 und eine Compiler-Toolchain.Wie Sie diese installieren, hängt von Ihrer Distribution ab, falls Sie sie noch nicht haben.

Versuchen Sie es mit der Installation jsdom wiederholen Sie dies, nachdem Sie die oben genannten Anforderungen für Ihr Betriebssystem erfüllt haben, und prüfen Sie, ob dies das Problem löst.

Übrigens bekommen Sie das gleiche Problem mit topojson weil es eine Abhängigkeit von hat d3 was wiederum abhängig ist von jsdom, es ist also genau das gleiche Problem bei der Installation von jsdom.Hoffe das hilft!

--BEARBEITEN--

Da es sich so anhört, als würden Sie Ubuntu verwenden, würde ich empfehlen, mit dem folgenden Befehl zu beginnen:

sudo apt-get install build-essential

Dies wird installiert machen und g++ und einige andere Werkzeuge.Dieses Paket und Python2.7 sind wahrscheinlich alles, was Sie für eine erfolgreiche Installation von contextify benötigen.

Lösung 1b: Ich [vermute][1] die rm -r /home/<user>/local/lib/node_modules/ das Schlüsselelement zu sein, das die Situation erschließt.Sie können die globale Liste (-g) knotenmodule, dann entferne die relevanten (n) (topojson und/oder jsdom und/oder node-gyp) speziell, dann installieren Sie es (sie) neu.

Menübefehle: Versuchen Sie es unter Ubuntu...

 cd /home/<user>/local/lib/node_modules/  #replace <user> by relevant user name to set your cwd
 ls -1      # give the list of global modules names
 rm -r /<module_name>    #replace <module_name> by relevant name to remove it
 sudo npm install -g <module_name>  #replace <module_name> by relevant name for global install

Beachten: topojson hängt ab von jsdom und npm-gyp.

[1]:nicht ausprobiert, aber nach meiner Diagnose sinnvoll.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top