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 ?
A voir également:
- Npm n'est pas reconnu en tant que commande interne
- Cle usb non reconnu - Guide
- Invite de commande - Guide
- Mon dossier n’est pas reconnu en tant que commande interne ou externe ✓ - Forum Javascript
- 'Pip' n’est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes. ✓ - Forum Python
- Npm ✓ - Forum Ubuntu
7 réponses
Bonjour,
Je ne m'y connais pas en
Bonne chance
Je ne m'y connais pas en
npm, 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
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.jsontu 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é à
npmpour 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.
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 :
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.
- 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 commande
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"
Pour mon problème de permissions, c'est que j'avais fais un test d'installation du module "bower" avec la commande
npm install boweret 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 commande
Ensuite oui tes applications s'appuient sur des fichiers de configuration (dont le nom est prédéfini dans l'application) dans
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 permet
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 commande
chmodne 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 un
sudoou 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
/etcet dans ton dossier utilisateur (généralement de la forme
/etc/applicationou
~/.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 permet
pipmais pas
apt), 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)...