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)

Ś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

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

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 .


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.


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


8

Jak wcześniej wspomniano.

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

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 .



2

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

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

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)


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.


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.


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.


0

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

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

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


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

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!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.