Erreur: impossible de trouver le module «../lib/utils/unsupported.js» lors de l'utilisation d'Ionic


262

J'obtiens toujours ce message d'erreur lorsque j'exécute "Ionic start project name":

Message d'erreur

Running command - failed![ERROR] An error occurred while running npm install (exit code 1):

    module.js:471
        throw err;
        ^

    Error: Cannot find module '../lib/utils/unsupported.js'
        at Function.Module._resolveFilename (module.js:469:15)
        at Function.Module._load (module.js:417:25)
        at Module.require (module.js:497:17)
        at require (internal/module.js:20:19)
        at /usr/local/lib/node_modules/npm/bin/npm-cli.js:19:21
        at Object.<anonymous> (/usr/local/lib/node_modules/npm/bin/npm-cli.js:79:3)
        at Module._compile (module.js:570:32)
        at Object.Module._extensions..js (module.js:579:10)
        at Module.load (module.js:487:32)
        at tryModuleLoad (module.js:446:12)

Le chemin relatif est faux ..
Subburaj

vérifiez le chemin dans ./bash_profile
Mohan Gopi

Sur MacOS - réinstaller à partir de nodejs.org permet de voir les votes positifs de stackoverflow.com/a/12313655/1497139
Wolfgang Fahl

Réponses:


775

Essayez de supprimer /usr/local/lib/node_modules/npmet de réinstaller le nœud à nouveau. Cela devrait fonctionner.

Sur MacOS avec Homebrew :

sudo rm -rf /usr/local/lib/node_modules/npm
brew reinstall node

1
si quelqu'un veut s'y rendre via le Finder: knowledge.autodesk.com/support/smoke/troubleshooting/caas/…
A.com

13
Si vous utilisez de l'infusion, vous pouvez utiliser: brew unistall --force nodeetbrew install node
Nico

15
@Nico la première commande a une faute de frappe. La correction sera brew uninstall --force node.
Jayant Bhawal

11
pourquoi ça se passe?
Gaurav Paliwal

4
Après avoir exécuté les commandes ci-dessus, obtenez maintenant >> -bash: / usr / local / bin / npm: Aucun fichier ou répertoire de ce type
Tarun

81

J'ai suivi les réponses précédentes et réinstallé le nœud. Mais j'ai eu cette erreur.

Avertissement: l'étape de post-installation n'a pas abouti. Vous pouvez réessayer en utilisant brew postinstall node

J'ai donc exécuté cette commande

sudo chown -R $(whoami):admin /usr/local/lib/node_modules/

Puis couru

brew postinstall node

vous pouvez également exécuter sudo chown -R $ (whoami) $ (brew --prefix) / *
Pathfinder

27

J'ai reçu une erreur similaire et je la fais maintenant fonctionner.

Assurez-vous d'abord d'avoir la dernière version

brew update

Supprimez votre instance précédente de nœud:

brew uninstall node

Réinstallez ensuite la dernière version:

brew install node

Et puis assurez-vous qu'il est lié à / usr / local s'il ne l'est pas déjà. Vous obtiendrez une erreur pour vous informer de la fin de cette étape.

brew link --overwrite node 

Plus de détails sur la façon d'installer / mettre à niveau le nœud sont également disponibles .


12
Vous pouvez utiliser brew uninstall --ignore-dependencies nodesi, par exemple, vous avez yarndans votre système.
Sound Blaster

18

Sur Mac OS X (10.12.6), j'ai résolu ce problème en procédant comme suit:

brew uninstall --force node
brew install node

J'ai ensuite reçu une erreur me plaignant de l'échec de la post-installation du nœud et de réexécuter brew postinstall node

J'ai alors eu une erreur:

permission denied @ rb_sysopen /usr/local/lib/node_modules/npm/bin/npx

J'ai résolu cette erreur en:

sudo chown -R $(whoami):admin /usr/local/lib/node_modules

Et maintenant, je ne reçois plus cette erreur.


1
J'ai dû répéter cela plusieurs fois, sur différents dossiers qui devaient être créés ou dont le propriétaire devait changer (pour mon utilisateur). Chaque fois que je courais brew postinstall nodepour trouver le problème suivant, je le répétait.
T. Kim Nguyen

9

Si vous utilisez la bibliothèque "n" @ https://github.com/tj/n . Procédez comme suit

  echo $NODE_PATH

Si le chemin du nœud est vide, alors

sudo n latest    - sudo is optional depending on your system

Après avoir changé de version de Node.js à l'aide de n, npm peut ne pas fonctionner correctement.

curl -0 -L https://npmjs.com/install.sh | sudo sh
echo NODE_PATH

Vous devriez voir votre chemin de nœud maintenant. Sinon, ça pourrait être autre chose


8

Comme mentionné précédemment.

 sudo rm -rf /usr/local/lib/node_modules/npm
 brew uninstall --force node                
 brew install node

6

J'ai essayé toutes les réponses d'installation ci-dessus / plus anciennes, aucune ne fonctionne pour mon ordinateur portable.

Seule la méthode ci-dessous pourrait résoudre mon problème.

1) Exécutez les commandes suivantes:

sudo rm -rf /usr/local/lib/node_modules/npm
brew uninstall --force node      

2) Ensuite, accédez au site Web officiel de Node.js https://nodejs.org/en/download/current/ pour télécharger le dernier package pour la nouvelle installation.

3) Exécutez à nouveau votre commande npm, qui ne devrait plus contenir d'erreurs.

Cette méthode fonctionne sur macOS Mojave version 10.14.4 .



2

Oui, vous devez réinstaller le nœud:

sudo rm -rf /usr/local/lib/node_modules/npm
 brew uninstall --force node                
 brew install node

2

Suivez simplement trois étapes;

  1. Vider le npmcache avec force:

    npm cache clean -f

  2. Installez le npackage globalement en utilisant npm:

    npm install -g n

  3. Installez à partir de l'une des trois options:

    une. sudo n stable (get the stable version)

    b. sudo n latest (get the latest version of node)

    c. sudo n x.x.x (get the specific version of node)


2

L'erreur Cannot find module '../lib/utils/unsupported.js'est causée par require('../lib/utils/unsupported.js')in ./lib/node_modules/npm/bin/npm-cli.js.

Selon la requiredocumentation de nodejs , le module requis est recherché par rapport au fichier, comme il commence par ../.

Ainsi, si nous prenons le chemin relatif à ../lib/utils/unsupported.jspartir de ./lib/node_modules/npm/bin/npm-cli.js, le module requis doit résider ./lib/node_modules/npm/lib/utils/unsupported.js. S'il n'est pas là, je vois deux options:

  • l'installation est corrompue, auquel cas la réponse de Vincent Ducastel pour réinstaller le nœud pourrait fonctionner
  • npmn'est pas un lien symbolique vers ./lib/node_modules/npm/bin/npm-cli.js. C'est ce qui a provoqué l'erreur dans ma configuration. Si vous appelez npm, il trouvera généralement qu'il le recherche dans les répertoires répertoriés dans la PATHvar env. Il pourrait par exemple se trouver dans ./bin. Cependant, npmdans un ./binrépertoire ne devrait être qu'un lien symbolique vers ce qui précède ./lib/node_modules/npm/bin/npm-cli.js. S'il ne s'agit pas d'un lien symbolique mais qu'il contient directement le code, quelque part dans le processus d'installation, le lien symbolique a été remplacé par le fichier auquel il est lié. Dans ce cas, il devrait suffire de recréer le lien symbolique:cd ./bin; rm npm; ln -s npm ./lib/node_modules/npm/bin/npm-cli.js

Toutes les réponses qui suggèrent de vérifier la NODE_PATHou la npmrcconfiguration doivent être ignorées, car elles ne sont pas prises en compte lors de la recherche relative des modules.


1

J'ai obtenu cette erreur en mélangeant les méthodes d'installation / mise à jour: nœud installé via le téléchargement du package à partir du site Web et plus tard, j'ai utilisé brew pour mettre à jour.

J'ai corrigé en désinstallant la version d'infusion:

désinstaller brew - nœud de dépendances-ignore

Ensuite, je suis retourné sur le site Web du nœud et téléchargé et installé via le gestionnaire de paquets: https://nodejs.org/en/download/ Pour une raison quelconque, aucune tentative de réinstallation via brew n'a fonctionné.


0

Dans mon cas, il manquait $ NODE_PATH:

NODE="/home/ubuntu/local/node" #here your user account after home
NODE_PATH="/usr/local/lib/node_modules" 
PATH="$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:$NODE/bin:$NODE/lib/node_modules"

Vérifier simplement echo $NODE_PATHvide signifie qu'elle n'est pas définie. Il est recommandé de les ajouter à .bashrc.


0

Sur fedora 27, j'ai résolu le problème en faisant ceci:

sudo rm -f  /usr/local/lib/node_modules/npm
sudo dnf reinstall nodejs

0

Il s'agit d'une vidéo et d'un article de blog utiles sur la suppression du nœud du système d'exploitation de votre ordinateur. Il s'agit d'une méthode de suppression différente en fonction de la façon dont vous avez installé le nœud en premier lieu (fichier brew vs fichier binaire téléchargé depuis https://nodejs.org/en/

  • si vous avez installé le nœud avec Homebrew, le nœud de désinstallation de brew fonctionnera. Vérifiez cela en exécutant une node -vcommande dans votre terminal.

  • Dans le cas contraire et si vous avez installé le fichier binaire à partir du site Web de NodeJS alors vous devez exécuter cette commande dans votre terminal: sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node.*}. Encore une fois, vérifiez cela en exécutant une commande node -v.

  • Dans les deux cas, la suppression réussie du nœud devrait se traduire par bash ne pas reconnaître ce nœud s'il est complètement supprimé


2
Un lien vers une solution est le bienvenu pour prendre en charge une réponse, mais la réponse que vous publiez doit être complètement autonome, c'est-à-dire ne pas obliger les visiteurs à cliquer sur un autre site qui peut contenir du contenu inattendu ou malveillant, ou qui n'existe plus du tout.
tripleee


0

Cela peut se produire lorsque le npm/libdossier a été vidé pour une raison quelconque (cela peut également se produire en raison de problèmes d'autorisation lors de la dernière utilisation).

Une réinstallation du nœud pourrait résoudre le problème (comme indiqué dans d'autres réponses ici), mais je suggérerais d'utiliser un merveilleux outil appelé nvm(Node Version Manager), qui est capable de gérer plusieurs versions de nodeet npm- cela est surtout utile sur les machines de développement avec plusieurs projets nécessitent différentes versions de nœud.

Lorsque vous installez nvm , ce message disparaîtra et vous aurez la dernière version de nodeet npmà utiliser.

Afin de voir la liste des versions de nœuds actuellement installées dans votre nvm, exécutez simplement:

nvm list

Pour installer et utiliser une nouvelle version de nœud, exécutez:

nvm install <node_version>

Par exemple, pour installer la dernière version du nœud 10.x, exécutez:

nvm install 10

Afin de passer à la version actuellement installée, exécutez:

nvm use <node_version>

Afin de passer à la version de noeud d'origine du système, exécutez simplement:

nvm use system

J'espère que cela t'aides.

Bonne chance!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.