Bonjour !

J'ai suivi le tuto sur PUPHPET et paramétré ma VM comme je le souhaitais, sauf que je suis pas foutu d'installer des packages via npm sur la VM...

Je procède ainsi : j'ouvre mon cmd en admin (je suis sous Windows 8.1), je me log en ssh sur la VM via

vagrant ssh

, je me déplace dans mon dossier partagé avec la commande cd, et lorsque je lance un

sudo npm install

, les 3/4 des modules node que j'ai spécifiés dans mon package.json me renvoie une erreur de ce type :

error Error: UNKNOWN, mkdir '/var/www/local.dev/netv/node_modules/gulp-livereload/node_modules/lodash.assign/node_modules/lodash._basecreatecallback/node_modules/lodash.bind/node_modules/lodash._createwrapper/node_modules/lodash._basebind/node_modules/lodash._basecreate/node_modules/lodash.noop'

J'ai essayé de passer l'argument

--no-bin-links

à la commande npm mais ça ne change rien, j'ai toujours ce fameux UNKNOWN mkdir :(

Quelqu'un aurait déjà rencontré et résolu ce problème ?

C'est chiant, l'intérêt d'utiliser Vagrant c'est de pas avoir à installer node, ruby et autres sur sa machine, du coup si je peux pas ça n'a plus vraiment d'utilité...

6 réponses


Tu essaie de l'installer sur un dossier partager entre ta machine réel et la machine virtuelle ?

Oui, dans l'option "Sharing Folders width Local VM" sur le site PUPHPET j'ai mis "z:/www" en source et "/var/www/local.dev/" en destination.

Le problème c'est que si je vais dans "/var/www/local.dev/monprojet" via ssh et que j'exécute "npm install", j'obtiens l'erreur décrite dans mon premier post. J'ai essayé en "sudo" pensant que c'était un problème de permissions, ça n'a rien changé. Et avec l'option "--no-bin-links", qui est censé ne pas créé de symlinks, ça ne change rien non plus...

J'avais aussi cette erreur lors de la création de liens symboliques sur mon répertoire partage entre windows et debian.
Je pense avoir résolu le problème en lançant mon terminal cmder windows en mode administrateur.
Comme ca vagrant up est aussi lance en tant qu'administrateur.

De plus pour lancer npm sans sudo j'ai executer cette commande:

npm config set prefix ~/npm

Et ajouter cette ligne a .bashrc en fin de fichier:
export PATH="$PATH:$HOME/npm/bin"

Puis source .bashrc

Mais j ai de nouvelles erreurs de dependences:

Comme celles-ci:

npm WARN unmet dependency /var/www/local.dev/yo/node_modules/grunt-contrib-imagemin/node_modules/imagemin/node_modules/imagemin-gifsicle/node_modules/gifsicle/node_modules/bin-build/node_modules/download requires fs-extra@'^0.11.0' but will load
npm WARN unmet dependency undefined,
npm WARN unmet dependency which is version undefined
npm WARN unmet dependency /var/www/local.dev/yo/node_modules/grunt-contrib-imagemin/node_modules/imagemin/node_modules/imagemin-gifsicle/node_modules/gifsicle/node_modules/bin-build/node_modules/download/node_modules/decompress requires fs-extra@'^0.11.0' but will load

Je vais tester ta méthode heyyo, je verrai bien si ça change quelque chose.

En ce qui concerne ton problème il semblerait qu'il te manque des dépendences. Cependant si c'est juste des WARN, ça ne devrait pas t'empêcher de faire tourner ton application correctement. Sinon, je ne sais pas si ça vient de ça mais j'ai voulu passer à une VM UNIX aussi pour éviter les erreurs de chemins de fichiers trop longs qui font buguer Windows, comme Node.JS imbrique des dossiers node_modules les uns dans les autres.
Je ne sais pas s'ils auraient un moyen de regrouper tous les modules et leur dépendences dans le dossier node_modules de premier niveau, mais ça serait vraiment génial (à moins qu'il y ait une autre contrainte).

Bref, quoiqu'il en soit, Node sur Windows, VM ou pas, c'est toujours la galère :(

Il y a apparemment une solution avec les liens symboliques mais je n'arrive pas a la mettre en place:

Si vous y arrivez je suis preneur de plus amples explications
https://github.com/fideloper/Vaprobash/issues/183

Oui je suis aussi tombé sur cette page en faisant des recherches, j'ai essayé mais ça n'a pas été concluant. Ça peut aider à resoudre certaines erreurs mais pas toutes...

A force de recherches, ma conclusion est qu'en tant qu'utilisateurs Windows, on ne peut qu'attendre une meilleure implémentation de Node.JS & NPM ou de Vagrant sur celui-ci pour pouvoir utiliser ces nouvelles technos proprement sur une VM. Ou espérer qu'un jour on puisse développer sereinement sur un Windows capable de gérer des chemins de fichiers beaucoup plus longs, comme le font ses homologues depuis bien longtemps.