Почему установка npm говорит, что у меня есть неудовлетворенные зависимости?

У меня есть пакет node. Когда я запускаю npm install из корня пакета, он устанавливает кучу вещей, но затем печатает несколько сообщений об ошибках, которые выглядят следующим образом:

npm WARN неудовлетворительная зависимость/Пользователи/seanmackesey/google_drive/code/explorer/generator/ node_modules/findup-sync/node_modules/glob требует [email protected]'~1.2.0 ', но будет загружать

Я должен быть смущен тем, что именно делает npm install. Если он обнаруживает зависимость, не следует ли устанавливать его? В каких условиях он дает мне сообщения об ошибках, подобные этому, и как я могу разрешить зависимости?

Ответ 1

Я считаю, что это потому, что разрешение зависимостей немного нарушено, см. https://github.com/npm/npm/issues/1341#issuecomment-20634338

Ниже приведены возможные решения:

  1. Вручную необходимо установить модули верхнего уровня, содержащие неудовлетворенные зависимости: npm install [email protected]

  2. Перестройте ваш package.json. Поместите все высокоуровневые модули (служит зависимостью для других модулей) внизу.

  3. Перезапустите команду npm install.

Проблема может быть вызвана тем, что npm не может загрузить весь пакет из-за превышения времени ожидания или чего-то еще.

Примечание. Вы также можете установить сбойные пакеты вручную, используя npm install [email protected].

Перед запуском npm install могут помочь следующие шаги:

  • удалить node_modules, используя rm -rf node_modules/
  • запустить npm cache clean

Почему "удаление node_modules" иногда необходимо? Если во время npm install не удается установить вложенный модуль, последующий npm install не обнаружит отсутствующие вложенные зависимости.

Если это так, иногда достаточно убрать зависимость верхнего уровня этих отсутствующих вложенных модулей и снова запустить npm install. Видеть

Ответ 2

Это случилось со мной, когда WIFI опустился во время npm install. Удаление node_modules и повторное выполнение npm install исправлено.

Ответ 3

Я исправил проблему, используя эти командные строки

  • $ rm -rf node_modules/
  • $ sudo npm update -g npm
  • $ npm install

Сделано!

Ответ 4

Модернизация NPM до последней версии может сильно помочь в этом. Ответ dule выше, это правильно сказать, что управление зависимостями немного нарушено, но похоже, что это в основном для более старых версий npm.

Команда npm list предоставляет вам список всех установленных node_modules. Когда я обновлялся с версии 1.4.2 до версии 2.7.4, многие модули, ранее отмеченные значком WARN unmet dependency, больше не отмечались как таковые.

Чтобы обновить npm, вы должны ввести npm install -g npm в MacOSX или Linux. В Windows я обнаружил, что повторная загрузка и повторная загрузка установщика nodejs была более эффективным способом обновления npm.

Ответ 5

Вышеуказанные ответы не помогли мне полностью даже после удаления каталога node_modules.

Ниже команда помогла мне наконец:

npm config set registry http://registry.npmjs.org/

Обратите внимание, что это вытаскивает модули node по небезопасному HTTP-соединению.

Src: fooobar.com/questions/18818/...

Ответ 6

Для каждого -- UNMET PEER DEPENDENCY, например. -- UNMET PEER DEPENDENCY [email protected], установите эту зависимость с помощью npm install --save [email protected], пока у вас больше не будет UNMET DEPENDENCIES.

Удачи.

Ответ 7

Я запустил npm list и установил все пакеты, перечисленные как НЕЗАВИСИМОСТЬ UNMET

Например:

├── UNMET DEPENDENCY [email protected]^0.23.1
npm install [email protected]^0.23.1

Ответ 8

Это решило это для меня:

  • Исправить номера версий в package.json, в соответствии с ошибками;
  • Удалить node_modules (rm -rf node_modules);
  • Повторить npm install.

Повторите эти шаги, пока не будет больше ошибок.

Ответ 9

Что-то в подобном ключе, я бы добавил еще один шаг.

Обратите внимание, что в версии npm > 1.4.9 'npm install' устанавливает devDependencies. Сначала попробуйте удалить существующие модули и кеш:

remove node_modules $ rm -rf node_modules/
run $ npm cache clean

Затем попробуйте:

npm install --dev
npm update --dev

Это, по крайней мере, разрешит рекурсивное разрешение зависимостей.

Ответ 10

- реверсивная установка devDependencies (и ее запуск навсегда..) как это может помочь в устранении различий в версии?

Вы можете попробовать удалить папку node_moduls, затем очистить кэш npm и снова запустить "npm i"

Ответ 11

У меня была аналогичная проблема, когда я устанавливал CLI React Native. Я не был уверен, какую директорию /node_modules я должен был удалить после прочтения ответов здесь. Я в итоге просто запустил

npm update -g

и смог установить пакет после этого.

Ответ 12

Я пытался работать с автоматизированной системой развертывания, которая работает npm install, поэтому многие из этих решений не будут работать для меня в автоматическом режиме. Я не мог удалять/воссоздавать node_modules/, и я не мог легко изменить версии Node.js.

Итак, я закончил работу npm shrinkwrap - добавив файл npm-shrinkwrap.json в свой пакет развертывания и выполнив установки там. Это поставило проблему для меня; с файлом shrinkwrap как "помощником", npm, казалось, мог найти нужные пакеты и установить их для меня. (У Shrinkwrap есть и другие функции, но это было то, в чем я нуждался в этом конкретном случае).

Ответ 13

Я столкнулся с этой проблемой, когда я устанавливал реактивные пакеты, и это сработало для меня:    npm install --save <package causing this error>

Ответ 14

В моем случае обновление npm решило его.

sudo npm install -g npm

Ответ 15

npm install все пакеты из npm-shrinkwrap.json, но может игнорировать пакеты в package.json, если они не были предварительно установлены в первом.

Если у вашего проекта есть npm-shrinkwrap.json, убедитесь, что вы запускаете npm shrinkwrap для его регенерации каждый раз, когда добавляете add/remove/change package.json.

Ответ 17

Обновление до 4.0.0

Обновление до 4 так же просто, как обновление ваших зависимостей Angular до последней версии и двойная проверка, хотите ли вы анимации. Это будет работать для большинства случаев использования.

В Linux/Mac:

npm install @angular/{common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router,animations}@latest [email protected] --save 

В Windows:

npm install @angular/[email protected] @angular/[email protected] @angular/[email protected] @angular/[email protected] @angular/[email protected] @angular/[email protected] @angular/[email protected] @angular/[email protected] @angular/[email protected] @angular/[email protected] @angular/[email protected] [email protected] --save

Затем запустите любую команду ng serve или npm start, которую вы обычно используете, и все должно работать.

Если вы полагаетесь на анимацию, импортируйте новый BrowserAnimationsModule из @angular/platform-browser/animations в свой корень NgModule. Без этого ваш код будет компилироваться и запускаться, но анимация вызовет ошибку. Импорт из @angular/core устарел, используйте импорт из нового пакета

import { trigger, state, style, transition, animate } from '@angular/animations';.