Question

J'essaie d'installer jsdom tel:

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

Après quelques succès de la commande, l'installation échoue rapidement, avec le premier message d'erreur après l' [....] :

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

Soupçon?Ce bug apparaît également pour les autres modules :

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

enter image description here

Comment résoudre ce problème ?


Edit: J'ai essayé sudo apt-get remove --purge nodejs npm topojson de le réinstaller via différentes manières. Même quand nodejs réinstallez est réussie, l'erreur reste, donc je suppose que c'est plutôt contextuel (node.gyp ? cwd ?...).Supprimer/réinstaller les moyens essayé :

Était-ce utile?

La solution 2

Semble que j'ai trouvé un moyen soigneusement la suppression de tous nœud liées au fichier et dossier sur mon ordinateur.

0.Contexte: J'ai déjà fait plusieurs échec de la console de nettoyage

sudo apt-get remove --purge nodejs npm topojson

suivi par ~3 façons différentes de le réinstaller nodejs.J'ai essayé dans CHAQUE sens, de nettoyage à réinstaller, entre 2 et 4 fois.

1.Terminal de purge: Nous allons tout d'abord nettoyé mon mess de la manière la plus approfondie possible:

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

Pourtant, je viens de remarquer que cette profonde de purge n'a PAS de purge/supprimer noeud installé les modules, qui restent persistants.

2.La main de purge: Aussi, j'ai poussé la purge ensuite avec une main de purge pour les deux nodejs et node_modules.J'ai regardé pour TOUS les dossiers sur mon ordinateur, plus proche de la racine (ubuntu: /home/<user>/) le mieux.J'ai eu soin de supprimer toutes les données déjà installé mondiale .../node-modules/ dossiers, sans supprimer les modules locaux (local spécifique des installations, qui étaient toujours en activité).

3.Réinstaller: Ensuite, les consoles de permis d'une nouvelle réinstallation:

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

Afterwhat, ma conversion de fichiers via le module npm topojson (selon lui-même sur jsdom) a bien fonctionné :

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

4.Conclusion: Je ne peux pas identifier pourquoi, quel fichier/dossier de suppression a permis le succès de la sudo apt-get install nodejs + sudo npm install -g topojson réinstaller.Mais thist profond nettoyage via la souris et récursive supprimer sudo rm -r [node related folder/file] définitivement débloqué ma situation.

/!\ Être très prudent avec l' rm -r récursive supprimer. /!\

Autres conseils

Comme vous allez le découvrir dans les commentaires, c'est un problème très commun.Afin de commun, en effet, que les auteurs de jsdom ont documenté dans le fichier README pour le projet du dépôt git.


TL;DR

Vous avez besoin d'un compilateur C++ et Python2.7 installé sur votre ordinateur pour installer contextify qui est une dépendance de jsdom.Sinon, le jsdom installation échouera.


De le fichier lisez-moi sur le Github page pour jsdom:

Contextify

Contextify est une dépendance de jsdom, utilisé pour l'exécution de <script> les balises à l'intérieur de la page.En d'autres termes, il permet jsdom, qui est exécuté dans Node.js, pour exécuter des chaînes de JavaScript dans un environnement isolé qui fait semblant d'être un environnement de navigateur au lieu d'un serveur.Vous pouvez voir comment ce est une caractéristique importante.

Malheureusement, ce type de magie nécessite C++.Et dans Node.js, à l'aide de C++ à partir de JavaScript à l'aide de moyens "modules natifs." Les modules natifs sont compilés au moment de l'installation, de sorte qu'ils fonctionnent avec précision pour votre machine;c'est, vous n'avez pas à télécharger un contextify binaire de la ngp, mais au lieu d'en construire un localement après le téléchargement de la source à partir de mnp.

Malheureusement, l'obtention de C++ est compilé dans des mnp système d'installation peut être difficile, surtout pour les utilisateurs de Windows.Ainsi, l'un des problèmes les plus communs avec jsdom est d'essayer de l'utiliser sans les bons outils de compilation installé.Voici ce que vous avez besoin de compiler Contextify, et donc d'installer jsdom:

Windows

  • Une copie récente de la version x86 de Node.js pour Windows, pas la version x64.
  • Une copie de Visual C++ 2010 Express.
  • Une copie de Python 2.7, installé dans l'emplacement par défaut de C:\Python27.

Il y a quelques légères modifications à ce qui peut fonctionner;par exemple, les versions de Visual Studio pour habitude de travailler, et parfois vous pouvez même obtenir une version 64 x de Node.js de travail aussi.Mais c'est difficile, donc, commencer avec les bases!

Mac

  • XCode doit être installé
  • "Outils de ligne de commande pour XCode" doivent être installés
  • Lancez XCode une fois pour accepter le contrat de licence, etc.et de s'assurer qu'il est correctement installé

Linux

Vous aurez besoin de divers outils de construction installé, comme faire, Python 2.7, et un compilateur de la chaîne.Comment faire pour installer ces seront spécifiques à votre distribution, si vous n'avez pas déjà.

Essayer de l'installer jsdom de nouveau après de satisfaire les exigences mentionnées ci-dessus pour votre système d'exploitation, et voir si cela résout.

Par la manière, vous obtenez le même problème avec topojson parce qu'il a une dépendance sur d3 qui dépend à son tour jsdom, donc c'est un peu le même problème d'installation de jsdom.Espérons que cette aide!

--EDIT--

Depuis il semble que vous utilisez Ubuntu, je recommande de commencer avec la commande suivante:

sudo apt-get install build-essential

Cela permettra d'installer faire et g++ et quelques autres outils.Ce paquet et Python2.7 est probablement à peu près tout ce dont vous aurez besoin pour réussir à installer contextify.

Solution 1b: J' [suspect][1] l' rm -r /home/<user>/local/lib/node_modules/ pour être l'élément clé de déblocage de la situation.Vous pouvez inscrire le global (-g) node_modules, puis retirez le(s) (topojson et/ou jsdom et/ou node-gyp spécifiquement, puis réinstallez-le(les).

Commandes: Sur ubuntu, essayez...

 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

Note: topojson dépend jsdom et npm-gyp.

[1]:pas essayé, mais de sens en fonction de mon diagnostic.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top