npm Installationsmodul persistenter Fehler? (Knoten-Gyp bauen?)

8

Ich versuche, jsdom so zu installieren:

%Vor%

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

steht %Vor%

Tipp? Dieser Fehler tritt auch bei anderen Modulen auf:

%Vor%

Wie behebt man das?

Bearbeiten: Ich habe sudo apt-get remove --purge nodejs npm topojson versucht und dann auf verschiedene Arten neu installiert. Selbst wenn nodejs neuinstalliert erfolgreich ist, bleibt der Fehler , also denke ich, dass es eher kontextuell ist ( node.gyp ? cwd ? ...). Entfernen / Neuinstallationen versuchen:

Hugolpz 14.04.2014, 06:34
quelle

3 Antworten

3

Es scheint, dass ich einen Weg gefunden habe, indem ich alle knotenbezogenen Dateien und Ordner auf meinem Computer sorgfältig lösche.

0. Kontext: Ich habe zuvor mehrere nicht erfolgreiche Konsolenbereinigungen mit

durchgeführt %Vor%

gefolgt von ~ 3 verschiedenen Möglichkeiten, nodejs neu zu installieren. Ich probierte JEDEN Weg, vom Clean-up bis zur Neuinstallation, zwischen 2 & amp; 4 mal.

1. Säuberung des Terminals: Lassen Sie uns zuerst meinen Schlamassel auf die tiefste Weise säubern:

%Vor%

Aber ich habe gerade bemerkt, dass diese tiefe Säuberung nicht löscht / löscht installierte Knotenmodule , die persistent bleiben.

2. Handreinigung: Außerdem habe ich die Säuberung mit einer Handreinigung für nodejs und node_modules weiter vorangetrieben. Ich suchte nach ALL verwandten Ordnern auf meinem Computer, näher an der Wurzel (ubuntu: /home/<user>/ ), desto besser. Ich war vorsichtig, alle zuvor installierten globalen .../node-modules/ Ordner zu löschen, ohne lokale Module zu löschen (bestimmte lokale Installationen, die noch funktionierten).

3. Neu installieren: Die folgenden Konsolen erlaubten eine saubere Neuinstallation:

%Vor%

Nachher, meine Dateikonvertierung über npm Modul topojson (abhängig von jsdom ) hat gut funktioniert:

%Vor%

4. Fazit: Ich kann nicht nachvollziehen, warum die Datei / Ordner-Löschung die erfolgreiche sudo apt-get install nodejs + sudo npm install -g topojson Neuinstallation erlaubt hat. Aber diese Tiefenreinigung per Maus und rekursiv entfernen sudo rm -r [node related folder/file] hat definitiv meine Situation freigeschaltet.

/! \ Seien Sie sehr vorsichtig mit rm -r rekursiv entfernen . /! \

    
Hugolpz 05.05.2014, 13:47
quelle
9

Wie Sie aus den Kommentaren erfahren, ist dies ein sehr häufiges Problem. So üblich, dass die Autoren von jsdom dies 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 confectify zu installieren, was eine Abhängigkeit von jsdom ist. Andernfalls schlägt die jsdom-Installation fehl.

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

  

Contextify

     

Contextify ist eine Abhängigkeit von jsdom, die zum Ausführen von <script> -Tags innerhalb der Seite verwendet wird. Mit anderen Worten, es erlaubt jsdom, das in Node.js ausgeführt wird, JavaScript-Strings 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 in Node.js bedeutet die Verwendung von C ++ aus JavaScript die Verwendung von nativen Modulen. Native Module werden bei der Installation kompiliert, damit sie genau für Ihre Maschine funktionieren. Das heißt, Sie laden keine Contextify-Binärdatei von npm herunter, sondern erstellen eine lokal nach dem Herunterladen der Quelle von npm.

     

Leider kann die Kompilierung von C ++ innerhalb des Installationssystems von npm schwierig sein, besonders für Windows-Benutzer. Daher ist eines der häufigsten Probleme mit jsdom der Versuch, es ohne die richtigen Kompilierungswerkzeuge zu verwenden. Hier ist, was Sie benötigen, um Contextify zu kompilieren und somit 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 im Standardverzeichnis von C: \ Python27.
  •   

Es gibt einige kleine Modifikationen, die funktionieren können; zum Beispiel funktionieren in der Regel Vollversionen von Visual Studio, und manchmal kann sogar eine x64-Version von Node.js verwendet werden. Aber es ist schwierig, also fang mit den Grundlagen an!

     

Mac

     
  • XCode muss installiert werden
  •   
  • "Befehlszeilentools für XCode" müssen installiert werden
  •   
  • Starten Sie XCode einmal, um die Lizenz usw. zu akzeptieren und sicherzustellen, dass sie korrekt installiert ist.
  •   

Linux

     

Sie benötigen verschiedene Build-Tools wie make, Python 2.7 und eine Compiler-Toolchain. Wie Sie diese installieren, wird für Ihre Distribution spezifisch sein, wenn Sie sie nicht bereits haben.

Versuchen Sie, jsdom erneut zu installieren, nachdem Sie die oben genannten Anforderungen für Ihr Betriebssystem erfüllt haben, und prüfen Sie, ob das Problem gelöst wird.

Übrigens, Sie haben dasselbe Problem mit topojson , da es eine Abhängigkeit von d3 hat, die wiederum von jsdom abhängt. Es ist also genau das gleiche Problem bei der Installation von jsdom. Hoffe das hilft!

- BEARBEITEN -

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

%Vor%

Dies wird make und g ++ und einige andere Tools installieren. Dieses Paket und Python2.7 ist wahrscheinlich alles, was Sie benötigen, um confectify erfolgreich zu installieren.

    
jshanley 04.05.2014 00:36
quelle
0

Lösung 1b: Ich [verdächtige] [1] das rm -r /home/<user>/local/lib/node_modules/ ist das Schlüsselelement, das die Situation aufschließt. Sie können die globalen ( -g ) node_module auflisten und dann die relevanten ( topojson und / oder jsdom und / oder node-gyp ) spezifisch entfernen und sie dann (sie) neu installieren.

Befehle: Versuchen Sie auf ubuntu ...

%Vor%

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

[1]: nicht ausprobiert, macht aber Sinn entsprechend meiner Diagnose.

    
Hugolpz 06.05.2014 19:36
quelle