Hướng dẫn fix lỗi cài package node-gyp trên window
Thi thoảng pull code ở các máy khác nhau, mình gặp lỗi cài node-gyp như này Continue reading Untitled
View On WordPress
seen from Thailand
seen from Macao SAR China

seen from United States

seen from India
seen from Germany
seen from China

seen from United States
seen from India

seen from Malaysia

seen from United States

seen from United States

seen from Australia
seen from United Kingdom

seen from United Kingdom
seen from Mexico

seen from Netherlands
seen from Germany

seen from Romania
seen from Russia
seen from Yemen
Hướng dẫn fix lỗi cài package node-gyp trên window
Thi thoảng pull code ở các máy khác nhau, mình gặp lỗi cài node-gyp như này Continue reading Untitled
View On WordPress
On openSUSE, it can be installed with sudo zypper in krb5-devel
Github Issue
npm installでnode-gypが原因の意味不明なエラーを解消する方法
こんなエラーで悩み続けた。
Failed at the [email protected] install script ‘node-gyp rebuild’
どうしてものかと悩んだ結果、issueでみつけた対策を自分の環境にあわせ、以下のように実行した。
$ rm -rf node_module/* $ su - # npm install node-gyp –reinstall -g # exit $ npm install
これでうまくいった。 globalのnode-gypとnode_moduleの内の何かがおかしくなったのか? よくわからない。
mongodb fails install node-gyp kerberos missing gssapi/gssapi.h
I was having sudden problems installing MongoDB through npm i mongodb, as node-gyp was missing gssapi/gssapi.h when building kerberos, one of its dependencies. An issue on the GitHub page of kerberos for node.js pointing to the missing library libkrb5-dev, or krb5-devel as it`s called in zypper on openSUSE.
$ sudo zypper install krb5-devel $ npm i mongodb --save
Petit guide du développeur Node.js sous Windows (épisode 1 - installation)
Introduction
Avec Node.js , comme avec d'autres projets open source (je pense particulièrement à PHP à la fin des années 90), on ne peut que constater que tout le monde n'a pas la chance de travailler avec un système dérivé Unix (BSD, Linux, Solaris...).
Ce qui entraîne toujours quelques problèmes pour les windowsiens même si, depuis 2011, la situation c'est largement améliorée grâce au partenariat entre Joyant et Microsoft.
Je vous propose de partager, le temps de deux ou trois posts mon expérience tant sur les procédures d'installation que sur les quelques outils qui simplifient la vie du "pauvre" développeur Node obligé de composer avec Windows.
Les prérequis
Avant de choisir et d'installer une 'distribution' Node.js, il faut d'abord installer un interpréteur Python ainsi qu'un compilateur C/C++. Ceci pour nous permettre, plus tard, de construire et d'installer les modules natifs souvent indispensables pour la prise en charge des tâches de bas niveau comme la connectivité aux bases de données, le cryptage, les interactions avec le matériel, etc.
Pour les versions 32-bit de Windows vous devez utiliser les versions 32-bit de ces logiciels et pour les versions 64-bit vous pouvez indifféremment opter pour les versions 32-bit ou 64-bit.
L'interpréteur Python
Il faut absolument utiliser une version 2.7.x (actuellement, la dernière version est 2.7.6), mais je recommande d'utiliser :
[Python 2.7.3] (http://www.python.org/download/releases/2.7.3/#download) en version 32-bit ou 64-bit.
Après l'installation, pensez a vérifier ou a ajouter le répertoire ou vous avez installé Python à la variable d'environnement PATH.
Le compilateur C/C++
Malgré diverses tentatives pour utiliser GCC, le choix pour le compilateur se limite à ceux de Microsoft. Heureusement, on peut utiliser les versions express.
Pour Windows XP ou Vista :
Microsoft Visual Studio C++ 2010 for Windows Desktop (Express)
Pour les compilations en 64-bit1, il faut en plus :
Désinstaller, via le panneau de configuration, les packages redistribuables Microsoft Visual C++ 2010 (versions 32-bits et 64-bit).
Installer le SDK Windows 7 (version 64-bit).
Installer la mise à jour du Compilateur pour le SDK 7.1
Pour Windows 7 ou 8
Microsoft Visual Studio C++ 2012 for Windows Desktop (Express)
Le choix d'une distribution
Actuellement, il existe trois acteurs majeurs qui proposent une solution pour installer Node.js sous Windows.
L'offre de Joyent
Joyent est une société spécialisée dans les infrastructures cloud de hautes performance. C'est aussi le principal sponsor et promoteur de Node.js.
Le site officiel du projet (http://nodejs.org/) vous permet de télécharger les binaires d'installation et de trouver la documentation de référence.
De plus, on peut aussi trouver les versions instables2 depuis la page http://blog.nodejs.org/release.
Du point de vue économique, tout est fait pour que le développeur puisse disposer des outils sans bourse délier. Cependant l'offre d'hébergement est compliquée puisqu'elle est basée sur une tarification horaire par heure et par type de ressource. Cependant elle semble concurrentielle par rapport aux autres offres et une évaluation gratuite est disponible.
L'offre de Microsoft
Microsoft propose avec WebMatrix une solution intégrée pour installer et développer des applications Node sous Windows.
Si l'idée principale est de déployer les applications sur Azure (la solution cloud de l'éditeur), il est cependant possible d'utiliser votre propre architecture de préférence sur des versions Windows Server (à partir de Windows Server 2008).
Les points forts de cette solution sont :
Une remarquable intégration avec l'écosystème de Microsoft (IIS, ActiveDirectory,...)
Un support des technologies Microsoft (ASP.NET), mais aussi de Node.Js ou PHP
l'intégration de la gestion des versions avec Team Foundation Service ou de GIT.
Le support des outils de développement de l'éditeur comme Visual Studio et Expression Studio.
C'est une très bonne solution pour les organisations qui ont une infrastructure Microsoft et le support de Node.Js est assez complet.
Sur le poste du développeur, WebMatrix occupe pas mal de place, mais reste raisonnable en terme de consommation des ressources.
Du point de vue économique, si la solution de base est gratuite, l'addition risque d'être assez importante si l'on veut en tirer le maximum ou recourir aux outils Visual Studio.
L'offre de StrongLoop
StrongLoop est aussi l'une des sociétés qui font partie des contributeurs majeurs au projet Node.js.
L'offre StrongLoop Suite prend en charge tous les aspects de la gestion des applicatifs Node.js depuis le développement jusqu'au monitoring.
Enfin StrongNode permet de disposer d'une version spécifique de Node.js dont le principal avantage est d'être supportée par StrongNode (à condition de souscrire au support) et qui comporte des améliorations comme :
des packages certifiés et le support des modules les plus populaires
des outils de monitoring et de debugging avancés
la gestion des clusters et des performances
la possibilité de créer et d’utiliser un répertoire de modules privé.
Du point de vue économique, il existe une option Developper gratuite, mais sans support. Les autres options commencent à 99$ par mois pour un processus. C'est donc une solution à considérer lorsque l'on a besoin d'avoir un maximum de fiabilité avec un support de haute qualité, par exemple, dans le cadre d'un projet d'entreprise.
Installer Node.js
Nous allons utiliser l'installeur Windows (.msi) mis à disposition sur la page suivante http://nodejs.org/download/).
Téléchargez l'installeur qui correspond à vos besoins selon que vous désirez travailler en 32-bit ou 64-bit.
Voyons les quelques étapes de cette installation qui devrait être familière à tous les utilisateurs de Windows.
Étape Description Écran 1 L'écran d'accueil Cliquez sur Next 2 Accord de licence Cochez la case, puis 3 Choix du répertoire d'installation Veillez a remplacer le chemin proposé par défaut, par un chemin plus simple (exemple : C:\nodejs**) pour éviter des problèmes relatifs aux chemins d'accès sous Windows, puis cliquez sur **Next 4 Personnalisation de l'installation Par défaut tout est installé. Je conseille de garder ce choix, puis de cliquer sur Next 5 Lancement de l'installation Cliquez sur Next 6 Écran d'installation Attendez et en fin de procédure, cliquez sur Next 7 Rapport d'installation Sauf problème majeur, l'assistant à terminé son travail. Cliquez sur Finish
Dernière étape, vérifiez ou ajoutez le répertoire d'installation de Node.js à la variable d'environnement PATH.
Tester l'installation
Nous allons maintenant nous assurer que l’environnement créé Node.js est fonctionnel.
Test de base
Il faut ouvrir une fenêtre de commandes (combinaison des touches Win+R, puis entrez CMD et cliquez sur OK).
Puis entrer, la commande suivante :
node --version
Vous devez obtenir l'affichage de la version comme dans la copie d'écran suivante :
Tester l'installation des modules natifs
Sous Windows, l'un des problèmes les plus rébarbatifs concerne l'installation de modules natifs. Nous allons donc vérifier que cela fonctionne avec notre installation.
La partie construction de ce genre de module se fait grâce au package3 node-gyp. Il a été développé par Nathan Rajlich et représente un formidable investissement dans l'art de créer un utilitaire de compilation cross-plateforme de haute qualité.
Installer node-gyp
L'installation se fait grâce à l'utilitaire npm ou Node Packe Manager (nous reviendrons plus en détail sur npm dans le prochain épisode).
Il convient de lancer la commande suivante dans une fenêtre de commande :
npm install -g node-gyp
La ligne de commande signifie que l'on appelle nmp avec pour installer de manière -globale le package node-gyp.
Par défaut, sous Windows l'option -g installe les packages dans le répertoire c:\Users\%USERNAME%\AppData\Roaming\npm\node_modules\node-gyp. Ce chemin d'accès est le premier dans la liste de recherche des packages de node et les modules qui y sont placés sont automatiquement disponibles comme node.exe4.
En fin d'exécution de cette commande, vous pouvez vérifier que node-gyp est bien installé en lançant la commande suivante :
node-gyp
Qui vous affichera l'aide de cet utilitaire.
Test de node-gyp
J'ai cherché le moyen le plus simple pour tester l'installation de cet outil, et il me semble que c'est encore d'écrire un peu de code (rassurez-vous, vous pourrez aussi le télécharger).
Par commodité, je vous recommande de créer un répertoire pour ce mini-projet, chez moi il s'appelle gyp-test et d'un éditeur de texte (même notepad est utilisable).
Pour notre exemple, très simple, nous retournerons une simple chaîne de caractère depuis un binaire généré à partir d'un source c++ vers un programme Node.js minimaliste.
Description du projet et de ses dépendances (package.json)
Chaque projet Node.js comporte un fichier package.json qui décrit le projet, ses dépendances et, éventuellement, des éléments complémentaires comme son auteur, la liste des tests unitaires, le répertoire GIT du projet, etc.
Nous allons créer un fichier package.json minimum pour notre projet, dont le source est :
{ "name": "gyp-test", /* "version": "0.0.0", "description": "Test de la création et de l'appel d'un module avec node-gyp", "main": "gyp-test.js", "private": true, "gypfile": true }
Vous remarquerez que ce fichier est au forma JSON et que le nom des champs est explicite sauf pour les deux derniers.
private: indique que le module est privé
gypfile: qu'un fichier de build node-gyp est associé au projet
le fichier de build pour node.gyp (binding.gyp)
Il s'agit là aussi d'un fichier JSON 5 qui définit le nom des objets à construire ainsi que les sources associées. C'est l'équivalent d'un fichier dans le monde Node.js
{ "targets": [ { "target_name": "fonction_c", "sources": [ "fonction_c.cpp" ] } ] }
Ici, l'objet s'appelle fonction_c et son source fonction_c.cpp.
le source du module (fonction_c.cpp)
Les commentaires devraient être suffisant pour comprendre "grosso-modo" ce que fait ce morceau de code. Pour les currieux le fonctionnement des modules et les instructions pour les écrire sont sur le site de Node.js.
/* ** fonction_c.cpp : ** ** module strictement squelette qui met à disposition de node.js ** une méthode C++ ** */ // Headers obligatoires #include <node.h> #include <v8.h> // Déclaration de l'espace de nom using namespace v8; // Notre méthode qui retourne une nouvelle chaîne Handle<Value> Method(const Arguments& args) { HandleScope scope; return scope.Close(String::New("... et ça marche !")); } // export de notre méthode sous le doux nom de fonction_c void init(Handle<Object> exports) { exports->Set(String::NewSymbol("fonction_c"), FunctionTemplate::New(Method)->GetFunction()); } // macro d'initialisation NODE_MODULE(fonction_c, init)
Notre premier programme Node.js (gyp-test.js)
Ce programme simple utilise le mécanisme des packages pour appeler notre module.
/* ** gyp-test.js ** ** Test de l'utilitaire node-gyp (https://github.com/TooTallNate) ** ** Ce programme appelle une fonction simple écrite en C++ */ // Import de 'fonction_c' var i = require('./build/Release/fonction_c'); // Appelle de la fonction importée et écriture du résultat console.log(i.fonction_c());
Construction du projet
La première étape est d'utiliser node-gyp pour configuer le projet. Depuis le répertoire qui contient les sources, on lance la commande suivante :
node-gyp configure
Et, on obtient la sortie suivante :
gyp info it worked if it ends with ok gyp info using [email protected] gyp info using [email protected] | win32 | x64 gyp info spawn C:\Python27\python.exe gyp info spawn args [ 'C:\\Users\\BCool\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\gyp\\gyp_main.py', gyp info spawn args 'binding.gyp', gyp info spawn args '-f', gyp info spawn args 'msvs', gyp info spawn args '-G', gyp info spawn args 'msvs_version=auto', gyp info spawn args '-I', gyp info spawn args 'D:\\Projets\\gyp-test\\build\\config.gypi', gyp info spawn args '-I', gyp info spawn args 'C:\\Users\\BCool\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\addon.gypi', gyp info spawn args '-I', gyp info spawn args 'C:\\Users\\BCool\\.node-gyp\\0.10.25\\common.gypi', gyp info spawn args '-Dlibrary=shared_library', gyp info spawn args '-Dvisibility=default', gyp info spawn args '-Dnode_root_dir=C:\\Users\\BCool\\.node-gyp\\0.10.25', gyp info spawn args '-Dmodule_root_dir=D:\\Projets\\gyp-test', gyp info spawn args '--depth=.', gyp info spawn args '--generator-output', gyp info spawn args 'D:\\Projets\\gyp-test\\build', gyp info spawn args '-Goutput_dir=.' ] gyp info ok
Finalement, on obtient un répertoire build qui contient les fichiers nécessaires à la compilation du projet par Visual Studio :
binding.sln
fonction_c.vcxproj
fonction_c.vcxproj.filters
Ainsi qu'un fichier de configuration qui sera utilisé pour la construction du projet :
config.gypi
L'étape suivante est de lancer la construction par la commande :
node-gyp build
Si les étapes d'installation ont été respectées et qu'il n'y a pas d'erreur dans les sources du projet, on doit avoir un affichage qui ressemble à :
gyp info it worked if it ends with ok gyp info using [email protected] gyp info using [email protected] | win32 | x64 gyp info spawn C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe gyp info spawn args [ 'build/binding.sln', gyp info spawn args '/clp:Verbosity=minimal', gyp info spawn args '/nologo', gyp info spawn args '/p:Configuration=Release;Platform=x64' ] Génération des projets individuellement dans cette solution. Pour activer la génération en parallèle, ajoutez le commutateur "/m". fonction_c.cpp C:\Users\BCool\.node-gyp\0.10.25\deps\v8\include\v8.h(184): warning C4506: no definition for inline function 'v8::Per sistent<T> v8::Persistent<T>::New(v8::Handle<T>)' [D:\Projets\gyp-test\build\fonction_c.vcxproj] with [ T=v8::Object ] Creating library D:\Projets\gyp-test\build\Release\fonction_c.lib and object D:\Projets\gyp-test\build\Release\fonction_c.exp Generating code Finished generating code fonction_c.vcxproj -> D:\Projets\gyp-test\build\Release\\fonction_c.node gyp info ok
Le module est compilé et nous pouvons lancer notre programme node :
node gyp-test.js
Qui vous affichera : ... et ça marche !
Conclusion
Voilà nous avons configuré notre environnement Node.js sous Windows de manière a ce que l'on puisse profiter de toutes ses fonctionnalités y compris la compilation des modules natifs.
Dans le prochain épisode, nous verrons comment améliorer cet environnement de développement avec une petite sélection d'outils, de tours de main.
Et c'est une vraie galère. ↩︎
Les versions instables sont celles en cours de développement. Les utiliser permet de se familiariser avec les dernières améliorations de Node.js, mais aussi d'aider les développeurs en rapportant les problèmes et dysfonctionnements rencontrés. ↩︎
Attention : un package est l'équivalent, pour Node.js d'une bibliothèque de code réutilisable écrit en JavaScript alors qu'un module est un composant de bas niveau écrit en C/C++ qui est forcement appelé par un package. ↩︎
En effet, node est un exécutable (.exe), npm et node-gyp des fichiers de commandes (.cmd). Et, oui, dans les packages Node.js on peut aussi avoir toutes sortes de fichiers y compris des binaires et des exécutables. ↩︎
Normal, on fait du JavaScript après tout ! ↩︎
node-clucene - A Node.js native module that gives you advanced searching via CLucene--itself a C++ port of Lucene
committed for clucene updates
http://nikhilm.github.io/uvbook/An%20Introduction%20to%20libuv.pdf
Installing bcrypt with Windows 8 and Visual studio 2012
Okay so I was using this tutorial here.. which wanted me to use bcrypt.. I am using Windows 8 and Visual Studio 2012 (I have the 2010 C++ stuff installed too as TooLateNate says to on the node-gyp github. Anyway I couldn't get it running with: as bcrypt just wouldn't play ball.. but thanks to finding this thread here I managed to solve the problem with typing So if you are having trouble with anything and you have my problem just type npm install PACKAGE --msvs_version=2012 So for bcrypt happy trails