Если вы работаете с JavaScript и Node.js, вы уже знакомы с npm. Термин npm относится к двум вещам. Подробнее в официальной документации Node.js.
Всякий раз, когда вы устанавливаете Node.js, он по умолчанию устанавливает менеджер пакетов npm . Однако по какой-то причине вы можете столкнуться с проблемой, что bash не распознает npm как действительную команду.
В этом руководстве по устранению неполадок мы рассмотрим возможные шаги, которые можно предпринять для устранения ошибки. Мы будем использовать Ubuntu для демонстрации. Однако ключевые принципы применимы к любому другому дистрибутиву Linux.
Bash является оболочкой по умолчанию в большинстве дистрибутивов Linux. Когда мы запускаем команду на терминале, она переходит в Bash. Затем команда интерпретируется и выполняется.
Однако, если команда ищет инструмент, который Bash не распознает, она покажет ошибку.
Как следует из вывода, Bash не может найти команду «npm», связанную с каким-либо псевдонимом или инструментом Bash. Мы можем вывести несколько возможных сценариев:
Наше самое первое решение включает переустановку Node.js и всех его компонентов с нуля. Поврежденная установка или конфигурация могут вызвать такую проблему во многих случаях. Мы удалим существующую установку, настроим выделенный репозиторий Node.js и создадим новую установку Node.js.
Если у вас установлена старая версия Node.js, настоятельно рекомендуется выполнить обновление до последней стабильной версии (текущей или LTS). Старое программное обеспечение часто полно ошибок и уязвимостей. Большая часть кибератак происходит из-за того, что старое программное обеспечение не обновляется/исправляется.
Сначала удалите Node.js с помощью диспетчера пакетов по умолчанию. Для Ubuntu APT — это менеджер пакетов. Выполните следующую команду, чтобы удалить Node.js и все его компоненты:
$ sudo apt autoremove --purge nodejs npm node
Затем выполните следующие команды, чтобы удалить все остатки из системы.
$ sudo rm -rf /usr/local/bin/npm $ sudo rm -rf /usr/local/share/man/man1/node* $ sudo rm -rf /usr/local/lib/dtrace/node.d $ sudo rm -rf ~/.npm $ sudo rm -rf ~/.node-gyp $ sudo rm -rf /opt/local/bin/node $ sudo rm -rf opt/local/include/node $ sudo rm -rf /opt/local/lib/node_modules $ sudo rm -rf /usr/local/lib/node* $ sudo rm -rf /usr/local/include/node* $ sudo rm -rf /usr/local/bin/node*
Установка последней версии Node.js
Наша основная цель — убедиться, что в вашей системе установлена последняя версия Node.js. У нас уже есть подробное руководство по установке Node.js и npm в Ubuntu.
Короче говоря, выполните следующие команды, чтобы установить официальный репозиторий Node.js для Ubuntu. На момент написания этой статьи последняя текущая версия — Node.js v17.x, а последняя версия LTS — v16.x. По рекомендации официального сайта Node.js мы будем устанавливать LTS-версию:
$ curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
Теперь установите Node.js:
$ sudo apt install nodejs -y
Теперь проверьте, распознает ли Bash npm как правильную команду.
$ npm help
Если процесс завершится успешно, вы получите страницу справки npm. В противном случае проблема сохранится.
PATH — важная переменная среды, на которую полагаются многие части системы. Он сообщает оболочке (и системе), где искать определенные программы. Всякий раз, когда мы запускаем какую-либо команду, оболочка (в большинстве случаев Bash) ищет команду в местах, указанных в PATH. Если он не найден, он не распознает команду, даже если инструмент установлен правильно.
Чтобы увидеть значение переменной PATH, выполните следующую команду:
$ echo $PATH
В качестве альтернативы вы можете использовать следующую команду sed для печати вывода PATH. Он поместит каждую уникальную запись в новую строку.
$ sed 's/:/\n/g' <<< "$PATH"
Есть ли несоответствие в переменной PATH? В большинстве случаев в переменной PATH будет указано несколько путей. Попробуйте установить переменную PATH в состояние по умолчанию.
$ export PATH=$(getconf PATH)
После исправления переменной PATH проверьте, может ли Bash теперь найти npm.
$ npm help
Если это устранило проблему, рассмотрите возможность ручной установки переменной PATH с помощью файла bashrc. Короче говоря, добавьте следующие строки в файл bashrc.
$ export PATH=$(getconf PATH) $ export PATH:$PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin
Здесь,
Убедитесь, что обновление прошло успешно.
$ echo $PATH
Если вы используете переносную версию Node.js, вы также должны убедиться, что двоичное расположение также включено в переменную PATH. В противном случае Bash не сможет распознать двоичный файл.
В этой статье по устранению неполадок продемонстрированы некоторые решения для устранения проблемы, из-за которой Bash не может найти двоичный файл npm. Обратите внимание, что эти шаги предназначены для устранения общих неполадок. Если ваша проблема не устранена после их выполнения, вам следует обратиться за помощью к специалисту. Существуют огромные сообщества, такие как Stackexchange, которые могут помочь вам в вашей ситуации.