NodeJS erreurs NPM et Grunt
Bonjour,
J'essaie d'installer un programme "docdoku-web-front" qui nécessite nodejs avec grunt et npm. Quand je lance la commande
Quand je lance la commande pour déployer grunt 0.41:
J'obtiens ces erreurs:
Si je lance ensuite cette commande pour déployer grunt>=1:
J'obtiens ces erreurs:
C'est un peu le serpent qui se mange la queue.
Mon fichier package.json est configuré comme ceci:
Auriez vous quelques idées ?
J'essaie d'installer un programme "docdoku-web-front" qui nécessite nodejs avec grunt et npm. Quand je lance la commande
npm run devdans mon projet, j'ai des erreurs ave npm et je pense que le programme nécessite 2 versions de grunt 0.4.1 et supérieur à 1
Quand je lance la commande pour déployer grunt 0.41:
npm install --save-dev "grunt@~0.4.1"
J'obtiens ces erreurs:
npm WARN deprecated coffee-script@1.3.3: CoffeeScript on NPM has moved to "coffeescript" (no hyphen)
npm WARN deprecated minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated graceful-fs@1.2.3: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js
npm WARN load-grunt-tasks@4.0.0 requires a peer of grunt@>=1 but none is installed. You must install peer dependencies yourself.
Si je lance ensuite cette commande pour déployer grunt>=1:
npm install --save-dev "grunt@>=1"
J'obtiens ces erreurs:
npm WARN grunt-connect-proxy@0.2.0 requires a peer of grunt@~0.4.1 but none is installed. You must install peer dependencies yourself.
npm WARN grunt-execute@0.2.2 requires a peer of grunt@~0.4.1 but none is installed. You must install peer dependencies yourself.
C'est un peu le serpent qui se mange la queue.
Mon fichier package.json est configuré comme ceci:
{
"name": "docdokuplm",
"private": true,
"description": "Web based application for DocDokuPLM server",
"version": "1.1.0",
"devDependencies": {
"bower": "~1.8.0",
"casperjs": "~1.1.3",
"connect-livereload": "~0.3.2",
"debug": "^4.1.1",
"del": "~1.2.0",
"grunt": "^1.1.0",
"grunt-cli": "^1.2.0",
"grunt-connect-proxy": "~0.2.0",
"grunt-contrib-clean": "~1.0.0",
"grunt-contrib-compress": "~1.3.0",
"grunt-contrib-concat": "~1.0.1",
"grunt-contrib-connect": "^1.0.2",
"grunt-contrib-copy": "~1.0.0",
"grunt-contrib-cssmin": "^3.0.0",
"grunt-contrib-htmlmin": "~2.4.0",
"grunt-contrib-jshint": "~1.1.0",
"grunt-contrib-jst": "~1.0.0",
"grunt-contrib-less": "~2.0.0",
"grunt-contrib-requirejs": "~1.0.0",
"grunt-contrib-uglify": "~2.0.0",
"grunt-contrib-watch": "~1.1.0",
"grunt-execute": "~0.2.2",
"grunt-rev": "~0.1.0",
"grunt-text-replace": "^0.4.0",
"grunt-usemin": "~3.1.1",
"jit-grunt": "~0.10.0",
"jshint-stylish": "~0.1.5",
"load-grunt-tasks": "~4.0.0",
"serve-static": "^1.13.2",
"time-grunt": "~0.2.10",
"underscore": "~1.7.0",
"uuid": "~3.0.1",
"xml2js": "~0.4.9",
"yargs": "^15.3.1"
},
"engines": {
"node": ">=0.10.0"
},
"scripts": {
"preclean": "npm install",
"prebuild": "npm install",
"predev": "npm install",
"prevalidate": "npm install",
"postinstall": "bower install",
"clean": "grunt clean",
"build": "grunt build",
"dist": "grunt serve:dist",
"dev": "grunt serve",
"validate": "grunt jshint"
},
"dependencies": {
"http-proxy": "^1.18.1",
"lodash": "^4.17.15",
"lodash.update": "^4.10.2"
}
}
Auriez vous quelques idées ?
7 réponses
-
Bonjour,
Je ne m'y connais pas ennpm
, mais si on fait le parallèle avec apt, dans ce genre de situations, on essaierait d'utiliser la dernière version de chaque paquet plutôt que de geler certains numéro de version. Est-ce quelque chose d'envisageable dans ton cas ?
Bonne chance -
Merci pour votre réponse et cette nouvelle voie a exploiter, malheureusement je ne sais pas comment isoler les paquets à mettre à jour. Je viens de refaire l'installation de nodejs et npm sur une version plus récente et stable nodejs 12, en changeant les permissions "chmod 777" sur les répertoires de "docdoku-web-front" et je retrouve les mêmes erreurs. Cette fois-ce, j'ai lancé "npm audit" pour voir les dépendances concernées, c'est peut être ça les paquets à mettre à jour ?
Résultats de npm audit
Low │ Prototype Pollution │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.17.5 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ grunt-connect-proxy [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ grunt-connect-proxy > lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://www.npmjs.com/advisories/577 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low │ Prototype Pollution │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.17.5 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ grunt-contrib-jst [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ grunt-contrib-jst > lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://www.npmjs.com/advisories/577 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low │ Prototype Pollution │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.17.5 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ grunt-usemin [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ grunt-usemin > lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://www.npmjs.com/advisories/577 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Prototype Pollution │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.17.11 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ grunt-connect-proxy [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ grunt-connect-proxy > lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://www.npmjs.com/advisories/782 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Prototype Pollution │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.17.11 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ grunt-contrib-jst [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ grunt-contrib-jst > lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://www.npmjs.com/advisories/782 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Prototype Pollution │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.17.11 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ grunt-usemin [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ grunt-usemin > lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://www.npmjs.com/advisories/782 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Prototype Pollution │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.17.12 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ grunt-connect-proxy [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ grunt-connect-proxy > lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://www.npmjs.com/advisories/1065 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Prototype Pollution │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.17.12 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ grunt-contrib-jst [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ grunt-contrib-jst > lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://www.npmjs.com/advisories/1065 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Prototype Pollution │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.17.12 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ grunt-usemin [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ grunt-usemin > lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://www.npmjs.com/advisories/1065 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Symlink Arbitrary File Overwrite │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ bower │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=1.8.8 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ bower [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ bower │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://www.npmjs.com/advisories/776 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Denial of Service │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ http-proxy │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=1.18.1 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ grunt-connect-proxy [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ grunt-connect-proxy > http-proxy │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://www.npmjs.com/advisories/1486 │
└───────────────┴──────────────────────────────────────────────────────────────┘
found 11 vulnerabilities (3 low, 8 high) in 439 scanned packages
11 vulnerabilities require manual review. See the full report for details. -
Dans
package.json
tu sembles imposer des numéros de version. Est-ce indispensable ? Est-il possible d'utiliser des >= au niveau des numéros de version (en misant sur la compatibilité ascendante), ce qui donnerait plus de flexibilité ànpm
pour trouver un jeu de paquets compatibles entre eux ? -
Bonjour, désolé pour le temps de réponse, j'avais pas mal à faire. Merci pour ta réponse mamiemando, ça m'a ouvert les yeux sur les méthodes pour gérer les dépendances, notamment sur les balises resolutions{} dans les fichiers .json
Finallement, le problème provient des permissions, en amont je me suis rendu compte que le module bower n'était pas installé et que ma session n'avait pas les permissions sur /usr/bin/bower. Cela implique que je risque beaucoup d'autres problèmes comme pour le server Grunt et peut être même sur mon installation du server payara/mysql/jdbc.
Ma dernière question serait: est-il possible de changer les permissions sur ma session au lieu de tout réinstaller? J'avais créer une session avec les droits super-utilisateur et désactiver le root. Mais j'ai dû mal m'y prendre quelque part. Si vous avez des idées, je suis plus que preneur. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Je ne sais pas trop ce que signifie session dans le cas présent. Donc je vais te répondre avec les gestionnaires de paquets que je connais :
- apt impose d'être root pour installer des paquets, car le déploiement est global au système (donc seul root peut écrire dans les dossiers qui concernent tout le monde)
- pip (gestionnaire de modules python) laisse le choix. Si tu es root le paquet est installé pour tout le monde. Si tu es utilisateur le paquet est installé juste pour toi. Si le paquet est installé en root et en utilisateur, c'est l'installation utilisateur qui prend le pas.
- apt et pip permettent parfois d'installer le même module. Dans ce cas c'est le module pip qui prend le pas.
Toutes ces règles sont inhérentes aux répertoires d'installation (voir echo $PATH en shell + sys.path en python).
L'installation et l'utilisation d'un module sont orthogonales. Il n'y a pas de notion de "session" du coup je ne sais pas de quoi tu parles. -
Pardon, je ne suis pas encore familiarisé avec la terminologie linuxienne. Ce que j'appel session, c'est quand je me connecte sous gnome en tant qu'utilisateur ou en tant que root.
Pour mon problème de permissions, c'est que j'avais fais un test d'installation du module "bower" avec la commandenpm install bower
et que j'ai reçu le code d'erreur "permission denied sur le chemin /usr/bin/bower". J'ai ensuite mis les droits avec "chmod 777 -R /usr/bin/bower" et l'installation de "bower" a fonctionné.
Je pense donc qu'en amont de mon installation je dois avoir des problèmes, peut être sur NPM. Comme certains répertoires qui nécessite des permissions spéciales tel que "~/.npm" et "~/.config" -
Plusieurs choses :
Le terme session sans contexte peut désigner plusieurs choses. Une session réseau, une session utilisateur, plus généralement une session vis à vis dans un logiciel.
Ce qui est sûr c'est que la commandechmod
ne doit jamais être utilisée comme tu l'as fait. Relâcher les droits = ouvrir un trou de sécurité. Si ton utilisateur n'a pas les droits suffisants, il faut te demander pourquoi et si c'est normal. Neuf fois sur dix c'est juste qu'il s'agit d'une commande administrateur et qui requiert donc unsudo
ou de passer root. À titre indicatif ton binaire peut n'importe être modifié par n'importe quel utilisateur connecté à ta machine et donc est un point d'attaque potentiel. Donc déjà tu devrais revenir à des droits plus raisonnables (e.g. 755).
Ensuite oui tes applications s'appuient sur des fichiers de configuration (dont le nom est prédéfini dans l'application) dans/etc
et dans ton dossier utilisateur (généralement de la forme/etc/application
ou~/.application
).
Du coup je te renvoie à ce que je t'expliquais sur le gestionnaire de paquets. Si celui-ci permet de faire une installation locale à un utilisateur (donc installer des paquets donc dans son home, comme le permetpip
mais pasapt
), pas besoin de droits root ou d'intervenir ailleurs que dans ton home. Sinon il faut sûrement être root et les paquet atterrissent à l'extérieur de ton home (voir FHS)...