
При попытке запустить команду npm я получаю следующую ошибку.
internal/modules/cjs/loader.js:626
throw err;
^
Error: Cannot find module 'semver'
Require stack:
- /usr/share/npm/lib/utils/unsupported.js
- /usr/share/npm/bin/npm-cli.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:623:15)
at Function.Module._load (internal/modules/cjs/loader.js:527:27)
at Module.require (internal/modules/cjs/loader.js:681:19)
at require (internal/modules/cjs/helpers.js:16:16)
at Object.<anonymous> (/usr/share/npm/lib/utils/unsupported.js:2:14)
at Module._compile (internal/modules/cjs/loader.js:774:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:785:10)
at Module.load (internal/modules/cjs/loader.js:641:32)
at Function.Module._load (internal/modules/cjs/loader.js:556:12)
at Module.require (internal/modules/cjs/loader.js:681:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/usr/share/npm/lib/utils/unsupported.js',
'/usr/share/npm/bin/npm-cli.js'
]
}
Я в основном пытался использовать FreeCodeCamp в автономном режиме. Он попросил меня запустить команду 'npm ci', из-за чего я начал получать эту ошибку.
Я пробовал переустановить npm, но это не помогло. Я также пробовал установить модуль semver, но это тоже не помогло.
Что могло пойти не так и как это исправить?
решение1
Нашел похожий вопросздесьи ответ сработал.
sudo rm -rf /usr/local/bin/npm /usr/local/share/man/man1/node* ~/.npm
sudo rm -rf /usr/local/lib/node*
sudo rm -rf /usr/local/bin/node*
sudo rm -rf /usr/local/include/node*
sudo apt-get purge nodejs npm
sudo apt autoremove
Загрузите последнюю версию tar.xz
файла NodeJS с сайтаhttps://nodejs.org/en/download/
tar -xf node-v#.#.#-linux-x64.tar.xz
sudo mv node-v#.#.#-linux-x64/bin/* /usr/local/bin/
sudo mv node-v#.#.#-linux-x64/lib/node_modules/ /usr/local/lib/
Где #.#.#
находится версия, которую вы скачали?
Проверьте установку с помощью
node -v
npm -v
решение2
Это зависит от того, как вы хотите управлять Node JS/npm.
Как и предложил Бильбо Бэггинс, вы можете установить последнюю LTS-версию Node JS с официального сайта:https://nodejs.org/en/download/.
В Ubuntu, если вы предпочитаете управлять Node через репозитории по умолчанию с помощью apt
, лучше всего установить оба nodejs
способа npm
.
Весьма вероятно, что используемая вами версия npm ожидает semver
в определенном месте, которое не соответствует версии Node JS, которую вы установили. Если есть только одна версия nodejs
и только одна версия npm
, и они обе установлены с использованием репозиториев по умолчанию, это должно работать идеально.
Вот мое лучшее руководство по настройке работы Node и npm с использованием основных репозиториев Ubuntu:
sudo apt-get purge nodejs --auto-remove
иsudo apt-get purge npm --auto-remove
whereis node
: удалить все версии узла по одной за раз. Повторяйте, пока эта команда не вернет пробел послеnode:
.sudo apt-get install nodejs
node --version
: должен вернуться... no such file or directory
nodejs --version
: должно вернутьv1x.x.x
. Это версия, установленнаяapt
. Она, вероятно, будет менее новой, чем последняя версия, доступная на веб-сайте Node JS.sudo apt-get install npm
npm --version
: он будет использоватьnodejs
установленный файлapt
и работать правильно.
решение3
Я использовал nvm для управления версиями узлов. В моем случае npm syslink был сломан. Я решил проблему, удалив и переустановив узел снова.
проверьте версию вашего узла с помощьюnode --version
затем бегиnvm uninstall <your version>
затем переустановите с помощьюnvm install <your version
решение4
У меня была та же проблема, но 22.04. Ничего из вышеперечисленного мне не помогло, но я нашел этот процесс, который помог. https://codemarvels.in/2021/03/20/npm-install-gives-error-cannot-find-module-semver/ По сути:
sudo rm -rf /usr/local/bin/npm /usr/local/share/man/man1/node* ~/.npm
sudo rm -rf /usr/local/lib/node*
sudo rm -rf /usr/local/bin/node*
sudo rm -rf /usr/local/include/node*
sudo apt-get purge nodejs npm
sudo apt autoremove
sudo apt-get install nodejs npm