Ошибка: не удается найти модуль "../lib/utils/unsupported.js" при использовании Ionic

262

Я всегда получаю это сообщение об ошибке при запуске «Ионическое имя запуска проекта»:

Сообщение об ошибке

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
источник
Относительный путь неверен ..
Суббурадж
проверьте путь в ./bash_profile
Мохан Гопи
В MacOS - переустановка с nodejs.org помогает увидеть положительные отзывы на stackoverflow.com/a/12313655/1497139
Вольфганг Фал

Ответы:

775

Попробуйте удалить /usr/local/lib/node_modules/npmи переустановить узел еще раз. Это должно работать.

На MacOS с Homebrew :

sudo rm -rf /usr/local/lib/node_modules/npm
brew reinstall node
Винсент Дюкастель
источник
1
если кто -то хочет , чтобы попасть через видоискатель: knowledge.autodesk.com/support/smoke/troubleshooting/caas/...
A.com
13
Если вы используете варку, то вы можете использовать: brew unistall --force nodeиbrew install node
Nico
15
@ Нико первая команда имеет опечатку. Исправление будет brew uninstall --force node.
Джаянт Бхавал
11
почему это происходит?
Гаурав Паливал
4
После выполнения вышеуказанных команд теперь получается >> -bash: / usr / local / bin / npm: Нет такого файла или каталога
Tarun
81

Я следовал предыдущим ответам и переустанавливал узел. Но я получил эту ошибку.

Предупреждение: шаг после установки не завершился успешно. Вы можете повторить попытку, используя brew postinstall node

Итак, я запустил эту команду

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

Потом побежал

brew postinstall node
tacticalmovephase
источник
В качестве альтернативы вы можете запустить sudo chown -R $ (whoami) $ (brew --prefix) / *
Pathfinder
27

Я получил похожую ошибку, и теперь она работает.

Сначала убедитесь, что у вас последняя версия

brew update

Удалите ваш предыдущий экземпляр узла:

brew uninstall node

Затем переустановите последнюю версию:

brew install node

И затем убедитесь, что он вставлен в / usr / local, если это еще не сделано. Вы получите сообщение об ошибке для завершения этого шага.

brew link --overwrite node 

Более подробная информация о том, как установить / обновить узел , также доступна .

Denae
источник
12
Вы можете использовать, brew uninstall --ignore-dependencies nodeесли, например, у вас есть yarnв вашей системе.
Sound Blaster
18

В Mac OS X (10.12.6) я решил эту проблему, выполнив следующие действия:

brew uninstall --force node
brew install node

Затем я получил сообщение об ошибке, что произошел сбой postinstall узла, и снова запустите brew postinstall node

Я тогда получил ошибку:

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

Я решил эту ошибку следующим образом:

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

И теперь я больше не получаю эту ошибку.

Джордж Стокер
источник
1
Мне пришлось повторить это несколько раз для разных папок, которые либо нужно было создать, либо нужно было изменить их владельца (для моего пользователя). Каждый раз, когда я бегу, brew postinstall nodeчтобы найти следующую проблему, исправляю это, повторяю.
Т. Ким Нгуен
9

Если вы используете библиотеку "n" @ https://github.com/tj/n . Сделайте следующее

  echo $NODE_PATH

Если путь к узлу пуст, то

sudo n latest    - sudo is optional depending on your system

После переключения версий Node.js с помощью n, npm может работать некорректно.

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

Теперь вы должны увидеть свой путь к узлу. Иначе, это может быть что-то еще

Фил
источник
8

Как уже упоминалось ранее.

 sudo rm -rf /usr/local/lib/node_modules/npm
 brew uninstall --force node                
 brew install node
jackotonye
источник
6

Перепробовал все выше / старые ответы по установке Brew, ни один не работает для моего ноутбука.

Только ниже метод может решить мою проблему.

1) Запустите следующие команды:

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

2) Затем перейдите на официальный сайт Node.js https://nodejs.org/en/download/current/, чтобы загрузить последний пакет для новой установки.

3) Снова запустите команду npm, в которой больше не должно быть ошибок.

Этот метод работает на MacOS Mojave версии 10.14.4 .

Джерри Чонг
источник
2

Да, вы должны переустановить узел:

sudo rm -rf /usr/local/lib/node_modules/npm
 brew uninstall --force node                
 brew install node
Walterwhites
источник
2

Просто выполните три шага;

  1. Очистить npmкеш принудительно:

    npm cache clean -f

  2. Установите nпакет глобально, используя npm:

    npm install -g n

  3. Установите один из трех вариантов:

    а. sudo n stable (get the stable version)

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

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

Лакшмиканта Наяк
источник
2

Ошибка Cannot find module '../lib/utils/unsupported.js'вызвана require('../lib/utils/unsupported.js')в ./lib/node_modules/npm/bin/npm-cli.js.

Согласно документам nodejsrequire , требуемый модуль ищется относительно файла, с которого он начинается ../.

Таким образом, если мы берем относительный путь, ../lib/utils/unsupported.jsначиная с ./lib/node_modules/npm/bin/npm-cli.js, требуемый модуль должен находиться в ./lib/node_modules/npm/lib/utils/unsupported.js. Если его там нет, я вижу два варианта:

  • установка повреждена, и в этом случае ответ Винсента Дюкастеля на переустановку узла может сработать
  • npmнет символической ссылки на ./lib/node_modules/npm/bin/npm-cli.js. Это то, что вызвало ошибку в моей настройке. Если вы звоните npm, он, как правило, обнаруживает, что ищет его в каталогах, перечисленных в PATHenv var. Например, он может быть расположен в ./bin. Однако npmв ./binкаталоге должна быть только символическая ссылка на вышеупомянутое ./lib/node_modules/npm/bin/npm-cli.js. Если это не символическая ссылка, а непосредственно содержит код, где-то в процессе установки символическая ссылка заменяется файлом, на который она ссылается. В этом случае должно быть достаточно воссоздать символическую ссылку:cd ./bin; rm npm; ln -s npm ./lib/node_modules/npm/bin/npm-cli.js

Все ответы, которые предлагают проверить NODE_PATHили npmrcконфигурацию, следует игнорировать, так как они не учитываются при поиске модулей относительно.

franzlst
источник
1

Я получил эту ошибку, смешав методы установки / обновления: установил узел через загрузку пакета с веб-сайта, а позже я использовал brew для обновления.

Я исправил, удалив версию Brew:

brew uninstall --ignore-dependencies узел

Затем я вернулся на сайт узла и скачал и установил через менеджер пакетов: https://nodejs.org/en/download/. По какой-то причине попытки переустановки через brew не сработали.

jleatham
источник
0

В моем случае это было $ 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"

Для проверки просто echo $NODE_PATHпусто означает, что он не установлен. Добавить их в .bashrc рекомендуется.

Скорпен
источник
0

На fedora 27 я решил проблему, выполнив это:

sudo rm -f  /usr/local/lib/node_modules/npm
sudo dnf reinstall nodejs
tbo47
источник
0

Это полезное видео и запись в блоге об удалении узла из операционной системы вашего компьютера. Это другой метод удаления, основанный на том, как вы сначала установили узел (brew против бинарного файла, загруженного с https://nodejs.org/en/

  • если вы установили узел с помощью Homebrew, то будет работать узел удаления brew. Проверьте это с помощью node -vкоманды в вашем терминале.

  • В противном случае , и если вы установили бинарный файл с сайта nodeJS игровых , то вы должны выполнить эту команду в вашем терминале: sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node.*}. Опять же, проверьте это с помощью команды node -v.

  • В обоих случаях успешное удаление узла должно привести к тому, что bash не распознает, что это за узел, если он полностью удален

oalbacha
источник
2
Ссылка на решение приветствуется для поддержки ответа, но публикуемый вами ответ должен быть полностью автономным, то есть не требовать, чтобы посетители переходили на другой сайт, который может содержать неожиданный или вредоносный контент или вообще не существовать.
tripleee
0

Это может произойти, когда npm/lib папка по какой-то причине была очищена (это также может произойти из-за проблем с правами при последнем использовании)

Переустановка узла может решить проблему (как указано в других ответах здесь), но я бы предложил использовать замечательный инструмент под названием nvm(Node Version Manager), который может управлять несколькими версиями nodeиnpm - это в основном полезно на машинах разработчиков. с более чем одним проектом требуются разные версии узла.

Когда ты установите nvm , это сообщение исчезнет, ​​и вы получите самую последнюю версию nodeиnpm использовать.

Чтобы увидеть список установленных версий узлов в вашем nvm, просто запустите:

nvm list

Чтобы установить и использовать новую версию узла, запустите:

nvm install <node_version>

Например, чтобы установить последнюю версию узла 10.x, запустите:

nvm install 10

Чтобы переключиться на текущую установленную версию, запустите:

nvm use <node_version>

Чтобы переключиться на исходную версию узла системы, просто запустите:

nvm use system

Надеюсь это поможет.

Удачи!

Славик Мельцер
источник