Błąd: nie można znaleźć modułu „../lib/utils/unsupported.js” podczas korzystania z Ionic

262

Zawsze pojawia się ten komunikat o błędzie po uruchomieniu „Nazwa projektu Ionic start projektu”:

Komunikat o błędzie

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)
inxoy
źródło
Ścieżka względna jest zła.
Subburaj,
sprawdź ścieżkę w ./bash_profile
Mohan Gopi
W systemie MacOS - ponowna instalacja z nodejs.org pomaga zobaczyć opinie up stackoverflow.com/a/12313655/1497139
Wolfgang Fahl

Odpowiedzi:

774

Spróbuj usunąć /usr/local/lib/node_modules/npmi ponownie zainstalować węzeł. To powinno działać.

W systemie MacOS z Homebrew :

sudo rm -rf /usr/local/lib/node_modules/npm
brew reinstall node
Vincent Ducastel
źródło
1
jeśli ktoś chce się tam dostać za pomocą wyszukiwarki: Knowledge.autodesk.com/support/smoke/trou
Rozwiązywanie problemów
13
Jeśli używasz naparu, możesz użyć: brew unistall --force nodeibrew install node
Nico
15
@Nico pierwsze polecenie ma literówkę. Korekta będzie brew uninstall --force node.
Jayant Bhawal
11
dlaczego to się dzieje
Gaurav Paliwal
4
Po wykonaniu powyższych poleceń, teraz otrzymuję >> -bash: / usr / local / bin / npm: Brak takiego pliku lub katalogu
Tarun
81

Postępowałem zgodnie z poprzednimi odpowiedziami i ponownie zainstalowałem węzeł. Ale dostałem ten błąd.

Ostrzeżenie: krok po instalacji nie został pomyślnie zakończony. Możesz spróbować ponownie za pomocą brew postinstall node

Uruchomiłem więc to polecenie

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

Potem pobiegł

brew postinstall node
faza taktyczna
źródło
alternatywnie możesz uruchomić sudo chown -R $ (whoami) $ (brew --prefix) / *
Pathfinder
27

Otrzymałem podobny błąd i teraz działa.

Najpierw upewnij się, że masz najnowszą wersję

brew update

Usuń poprzednią instancję węzła:

brew uninstall node

Następnie zainstaluj ponownie najnowszą wersję:

brew install node

A następnie upewnij się, że jest dowiązany do / usr / local, jeśli jeszcze nie jest. Pojawi się błąd informujący o zakończeniu tego kroku.

brew link --overwrite node 

Dostępne są również szczegółowe informacje na temat instalacji / aktualizacji węzła .

Denae
źródło
12
Możesz użyć, brew uninstall --ignore-dependencies nodejeśli masz na przykład yarnswój system.
Sound Blaster
18

W systemie Mac OS X (10.12.6) rozwiązałem ten problem, wykonując następujące czynności:

brew uninstall --force node
brew install node

Wtedy dostałem błąd, że nie powiodła się ponowna instalacja węzła i uruchomiłem ją ponownie brew postinstall node

Wtedy dostałem błąd:

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

Rozwiązałem ten błąd przez:

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

A teraz nie otrzymuję już tego błędu.

George Stocker
źródło
1
Musiałem to powtórzyć kilka razy, w różnych folderach, które albo trzeba było utworzyć, albo zmienić ich własność (do mojego użytkownika). Za każdym razem, gdy biegam, brew postinstall nodeaby znaleźć następny problem, napraw go, powtórz.
T. Kim Nguyen,
9

Jeśli używasz biblioteki „n” @ https://github.com/tj/n . Wykonaj następujące czynności

  echo $NODE_PATH

Jeśli ścieżka do węzła jest pusta, to

sudo n latest    - sudo is optional depending on your system

Po zmianie wersji Node.js za pomocą n, npm może nie działać poprawnie.

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

Powinieneś teraz zobaczyć swoją ścieżkę do węzła. W przeciwnym razie może to być coś innego

phil
źródło
8

Jak wcześniej wspomniano.

 sudo rm -rf /usr/local/lib/node_modules/npm
 brew uninstall --force node                
 brew install node
jackotonye
źródło
6

Wypróbowałem wszystkie powyższe / starsze odpowiedzi instalacji naparu, żadne nie działa na moim laptopie.

Tylko poniższa metoda może rozwiązać mój problem.

1) Uruchom następujące polecenia:

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

2) Następnie przejdź do oficjalnej strony internetowej Node.js https://nodejs.org/en/download/current/, aby pobrać najnowszy pakiet do nowej instalacji.

3) Uruchom ponownie komendę npm, która powinna już zawierać błędy.

Ta metoda działa w systemie macOS Mojave w wersji 10.14.4 .

Jerry Chong
źródło
5

https://nodejs.org/en/

Wystarczy pobrać węzeł z oficjalnej strony, to zadziałało dla mnie! :)

C Williams
źródło
2

Tak, powinieneś ponownie zainstalować węzeł:

sudo rm -rf /usr/local/lib/node_modules/npm
 brew uninstall --force node                
 brew install node
Walterwhites
źródło
2

Po prostu wykonaj trzy kroki;

  1. Wyczyść npmcache dobitnie:

    npm cache clean -f

  2. Zainstaluj npakiet globalnie, używając npm:

    npm install -g n

  3. Zainstaluj z jednej z trzech opcji:

    za. sudo n stable (get the stable version)

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

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

Laxmikanta Nayak
źródło
2

Błąd Cannot find module '../lib/utils/unsupported.js'jest spowodowany require('../lib/utils/unsupported.js')w ./lib/node_modules/npm/bin/npm-cli.js.

Zgodnie z requiredokumentacją nodejs wymagany moduł jest przeszukiwany względem pliku, tak jak zaczyna ../.

Zatem jeśli weźmiemy ścieżkę względną ../lib/utils/unsupported.jsod ./lib/node_modules/npm/bin/npm-cli.js, wymagany moduł musi znajdować się w ./lib/node_modules/npm/lib/utils/unsupported.js. Jeśli go nie ma, widzę dwie opcje:

  • instalacja jest uszkodzona, w takim przypadku odpowiedź Vincenta Ducastela na temat ponownego instalowania węzła może działać
  • npmnie jest dowiązaniem symbolicznym do ./lib/node_modules/npm/bin/npm-cli.js. To właśnie spowodowało błąd w mojej instalacji. Jeśli zadzwonisz npm, zwykle przeszukuje go w katalogach wymienionych w PATHenv var. Może na przykład znajdować się w ./bin. Jednak npmw ./binkatalogu powinno być tylko dowiązanie symboliczne do wyżej wymienionych ./lib/node_modules/npm/bin/npm-cli.js. Jeśli nie jest to dowiązanie symboliczne, ale bezpośrednio zawiera kod, gdzieś w procesie instalacji dowiązanie symboliczne zostało zastąpione plikiem, do którego prowadzi. W takim przypadku wystarczy odtworzyć dowiązanie symboliczne:cd ./bin; rm npm; ln -s npm ./lib/node_modules/npm/bin/npm-cli.js

Wszystkie odpowiedzi sugerujące sprawdzenie NODE_PATHlub npmrckonfigurację należy zignorować, ponieważ nie są one uwzględniane przy wyszukiwaniu modułów względnie.

franzlst
źródło
1

Wystąpił ten błąd, mieszając metody instalacji / aktualizacji: zainstalowany węzeł poprzez pobranie pakietu ze strony internetowej, a później użyłem browaru do aktualizacji.

Naprawiłem przez odinstalowanie wersji Brew:

brew odinstaluj - węzeł zależnościignign

Potem wróciłem do strony węzła i pobrałem i zainstalowałem za pomocą menedżera pakietów: https://nodejs.org/en/download/ Z jakiegoś powodu żadna próba ponownej instalacji przez brew nie działała.

Jleatham
źródło
0

W moim przypadku brakowało $ 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"

Zaznaczenie echo $NODE_PATHpustego oznacza, że ​​nie jest ustawione. Dodaj je do .bashrc jest zalecane.

SkorpEN
źródło
0

Na fedora 27 rozwiązałem problem, robiąc to:

sudo rm -f  /usr/local/lib/node_modules/npm
sudo dnf reinstall nodejs
tbo47
źródło
0

To jest przydatny post na wideo i blog na temat usuwania węzła z systemu operacyjnego komputera. Jest to inna metoda usuwania, w zależności od sposobu zainstalowania węzła w pierwszej kolejności (plik brew vs. plik binarny pobrany z https://nodejs.org/en/

  • jeśli zainstalowałeś węzeł z Homebrew, to węzeł odinstalowujący brew będzie działał. Sprawdź to, uruchamiając node -vpolecenie w swoim terminalu.

  • Inaczej, a jeśli masz zainstalowany plik binarny z witryny nodeJS męska potem trzeba uruchomić to polecenie w terminalu: sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node.*}. Ponownie sprawdź to, uruchamiając polecenie węzła -v.

  • W obu przypadkach udane usunięcie węzła powinno spowodować, że bash nie rozpozna, który węzeł jest, jeśli zostanie całkowicie usunięty

oalbacha
źródło
2
Link do rozwiązania jest mile widziany w celu poparcia odpowiedzi, ale odpowiedź, którą zamieszczasz, powinna być całkowicie samodzielna, tj. Nie powinna wymagać od odwiedzających, aby przechodzili do innej witryny, która może zawierać nieoczekiwane lub złośliwe treści lub w ogóle już nie istnieje.
tripleee
0

W moim systemie macOS (10.13.3) rozwiązałem go po ponownej instalacji menedżera wersji Node .

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
source ~/.bashrc
użytkownik9869932
źródło
0

Może się to zdarzyć, gdy npm/libfolder zostanie opróżniony z jakiegoś powodu (może się to również zdarzyć z powodu problemów z uprawnieniami w ostatnim użyciu).

Ponowna instalacja węzła może rozwiązać problem (jak podano w innych odpowiedziach tutaj), ale sugerowałbym użycie wspaniałego narzędzia o nazwie nvm(Menedżer wersji węzła), który jest w stanie zarządzać wieloma wersjami nodei npm- jest to szczególnie przydatne na komputerach programistycznych z więcej niż jednym projektem wymagają różnych wersji węzła.

Po zainstalowaniu NVM ten komunikat zniknie, a Ty będziesz mieć najnowszą wersję nodei npmużywać.

Aby zobaczyć listę aktualnie zainstalowanych wersji węzłów w twoim NVM, po prostu uruchom:

nvm list

Aby zainstalować i używać nowej wersji węzła, uruchom:

nvm install <node_version>

Na przykład, aby zainstalować najnowszą wersję węzła 10.x, uruchom:

nvm install 10

Aby przełączyć się na aktualnie zainstalowaną wersję, uruchom:

nvm use <node_version>

Aby przejść do oryginalnej wersji węzła systemu, wystarczy uruchomić:

nvm use system

Mam nadzieję że to pomoże.

Powodzenia!

Slavik Meltser
źródło