Domanda

Provo ad installare Jsdom come:

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

Dopo un comando di successo, l'installazione non riesce rapidamente, con il primo messaggio di errore dopo il [....]:

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

suggerimento? Questo bug appare anche per altri moduli:

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

Inserisci Descrizione dell'immagine qui

Come risolverlo?


.

Modifica: Ho provato sudo apt-get remove --purge nodejs npm topojson quindi reinstallarlo tramite vari modi. Anche quando nodejs Reinstalla ha successo, l'errore rimane , quindi immagino che sia piuttosto contestuale (node.gyp? cwd? ...). Rimuovere / reinstallare i modi provato:

È stato utile?

Soluzione 2

Sembra che abbia trovato un modo eliminando attentamente tutto il file e la cartella relativi al nodo sul mio computer.

0. Contesto: In precedenza ho apportato diverse pulizie console non riuscite, con

sudo apt-get remove --purge nodejs npm topojson
.

seguito da ~ 3 modi diversi per reinstallare nodejs. Ho provato ogni modo, dalla pulizia per reinstallare, tra 2 e 4 volte.

1. Surging del terminale: Facciamo per la prima volta il mio pasticcio il modo più profondo possibile:

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

Eppure, ho appena notato che Questo profondo spurgo non spurga / elimina moduli nodo installati , che rimangono persistenti.

2. Spurga a mano: Inoltre, ho spinto l'eliminazione dell'altro con un'urgia a mano per nodejs e node_modules. Ho cercato Tutte le cartelle correlate sul mio computer, più vicino alla radice (Ubuntu: /home/<user>/) meglio. Stavo attento a eliminare tutte le cartelle Global GroweroDiceDiceTagCode precedentemente installate, senza eliminare i moduli locali (impianti locali specifici, che stavano ancora funzionando).

3. Reinstallazione: Quindi le seguenti console hanno consentito una reinstallazione pulita:

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
.

Afterhaw, la mia conversione dei file tramite il modulo NPM .../node-modules/ (a seconda su topojson) ha funzionato Fine:

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

4. Conclusione: Non riesco a identificare il motivo per cui, quale cancellazione del file / cartella ha consentito il successo jsdom + sudo apt-get install nodejstaGoDICODE. Ma Thist Deep Cleanup tramite mouse e ricorsivo rimuovi sudo npm install -g topojson ha definitivamente sbloccato la mia situazione.

/! \ Be Molto attento con il sudo rm -r [node related folder/file] Recursivo Riavursivo Rimuovi . /! \

Altri suggerimenti

Come stai scoprendo dai commenti, questo è un problema molto comune. Così comune, infatti, che gli autori di Jsdom lo hanno documentato direttamente nel file Leggimi per il repository Git del progetto.


.

TL; DR

È necessario disporre di un compilatore C ++ e Python2.7 installato sulla macchina per installare Contextify 1. / Strong> che è una dipendenza da JSdom . Altrimenti, l'installazione del jsdom fallirà.


.

Dal readme on the Pagina GitHub per JSdOM :

.

Contextify

Contextify è una dipendenza da jsdom, utilizzata per eseguire tag <script> all'interno della pagina. In altre parole, consente a Jsdom, che viene eseguito in node.js, per eseguire stringhe di JavaScript in un ambiente isolato che finge di essere un ambiente del browser invece di un server. Puoi vedere come questa è una caratteristica importante.

Sfortunatamente, facendo questo tipo di magia richiede C ++. E in node.js, usando C ++ da JavaScript significa usando "moduli nativi". I moduli nativi sono compilati in tempi di installazione in modo da lavorare con precisione per la macchina; cioè, non scarichi un contestifica binario da NPM, ma invece costruisci uno localmente dopo aver scaricato la sorgente da NPM.

Sfortunatamente, ottenendo C ++ compilato all'interno del sistema di installazione di NPM può essere complicato, in particolare per gli utenti Windows. Pertanto, uno dei problemi più comuni con JSdOM sta cercando di usarlo senza gli strumenti di compilazione appropriati installati. Ecco cosa è necessario compilare contestificare, e quindi installare JSdOM:

Windows

    .
  • Una copia recente della versione X86 di Node.js per Windows, non la versione X64.
  • una copia di Visual C ++ 2010 Express.
  • Una copia di Python 2.7, installata nella posizione predefinita di C: \ Python27.

Ci sono alcune lievi modifiche a questo che possono funzionare; Ad esempio, le versioni complete di Visual Studio di solito funzionano, e a volte è anche possibile ottenere una versione X64 di Node.js. Ma è difficile, quindi inizia con le basi!

Mac

    .
  • xcode deve essere installato
  • "Strumenti della riga di comando per Xcode" devono essere installati
  • Avvia xcode una volta per accettare la licenza, ecc. E assicurarsi che sia installato correttamente

linux

Avrai bisogno di vari strumenti di costruzione installati, come Make, Python 2.7 e un toolchain del compilatore. Come installare questi saranno specifici per la tua distribuzione, se non li hai già.

Prova a installare Jsdom dopo aver soddisfatto i requisiti sopra menzionati per il sistema operativo, e vedere se questo risolvelo.

A proposito, stai ottenendo lo stesso problema con Topojson perché ha una dipendenza da D3 che a sua volta dipende da JSdom , Quindi è solo lo stesso problema che installa Jsdom. Spero che questo aiuti!

- Modifica -

Dato che sembra che tu stia usando Ubuntu, consiglierei di iniziare con il seguente comando:

sudo apt-get install build-essential
.

Questo installerà Make e G ++ e alcuni altri strumenti. Questo pacchetto e Python2.7 sono probabilmente di tutto ciò che devi installare con successo contestificare.

Soluzione 1b: I [Sospetto] [1] Il rm -r /home/<user>/local/lib/node_modules/ è l'elemento chiave che sblocca la situazione.È possibile elencare i nodi_moduli globali (-g), quindi rimuovere uno / i (s) rilevante (topojson e / o jsdom e / o node-gyp) specificamente, quindi reinstallalo (loro).

Commands: su Ubuntu, prova ...

 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
.

Nota: topojson dipende da jsdom e npm-gyp.

[1]: non provato, ma ha senso secondo la mia diagnostica.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top