NPM не устанавливает зависимости модуля

Это мой package.json для модуля, который я включаю в родительский проект:

{
  "version": "0.0.1",
  "name": "module-name",
  "dependencies": {
    "express": "3.3.4",
    "grunt": "0.4.1",
    "grunt-contrib-compass": "0.4.0",
    "grunt-contrib-copy": "0.4.1",
    "grunt-contrib-cssmin": "0.4.1",
    "grunt-contrib-jshint": "0.6.3",
    "grunt-contrib-requirejs": "0.4.1",
    "grunt-contrib-uglify": "0.2.2",
    "grunt-contrib-watch": "0.5.1",
    "grunt-express-server": "0.4.1",
    "grunt-karma": "0.4.5",
    "grunt-regex-replace": "0.2.5",
    "request": "2.25.0"
  },
  "scripts": {
    "postinstall": "grunt install"
  }
}

Следует отметить, что этот модуль содержится в частном репо, и я включаю его в родительский package.json как: "module-name": "git+ssh://[email protected]:user/module-name.git"

Ответ 1

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

В первом люди перечисляют несколько обходных путей, которые вы можете попробовать.

Альтернативное решение может быть (немного хакерским) для явного перечисления зависимостей как зависимостей первого уровня. Это требует от вас вести список, но практически это должно быть сделано очень редко.

Ответ 2

У меня была очень похожая проблема, удаление всей папки node_modules и повторная установка работали для меня. Узнал этот трюк от IT Crowd!

rm -rf node_modules
npm install

Ответ 3

Я использую машину Windows.

  1. Я удалил папку node_modules.
  2. Каким-то образом файл package.lock.json создается. Я удалил этот файл.
  3. Затем установите npm.
  4. Чистая сборка.
  5. Запустить.

Ответ 4

если вы унаследовали этот код, может быть, что зависимости и версии были заблокированы, и у вас есть файл. /npm -shrinkwrap.json.

Если ваша зависимость не указана в этом файле, она никогда не будет установлена ​​с помощью команды npm install.

вам нужно будет вручную установить пакеты, а затем запустите npm shrinkwrap, чтобы обновить файл shrinkwrap.

Ответ 5

Я подозреваю, что вы столкнулись с проблемой, когда ваш package.json файл не находится в том же каталоге, что и ваш Gruntfile.js. Когда вы запускаете команды grunt xxx, вы получаете сообщение об ошибке:

Local Npm module "xxx" not found. Is it installed?

В настоящее время решение:

  • Создайте пакет package.json в том же каталоге, что и Gruntfile.js
  • Определите модули, необходимые вашему проекту grunt
  • Выполнить npm install, чтобы загрузить их локально
  • Теперь требуемая команда grunt должна работать.

ИМХО, печально, что у нас не может быть grut-модулей решения, загруженных из родительского модуля npm (т.е. package.json в родительском каталоге в том же проекте). Обсуждение здесь, по-видимому, указывает на то, что это было сделано, чтобы не загружать "глобальные" модули, но я думаю, что мы хотим загружать из модулей "мой проект".

Ответ 6

OP может быть верным для более старой версии node. Тем не менее, я столкнулся с тем же самым и с node 4.4.1.

Это очень хорошо может быть связано с используемой версией node. Попробуйте выполнить обновление до последней версии. Некоторые зависимости не загружаются транзитивно, если они несовместимы с версией node.

Я нашел это, запустив npm update.

После обновления до последней версии (4.4 → 5.9); это исправлено.

Ответ 7

В моем случае это помогло удалить node_modules и package-lock.json.

После этого просто переустановите все с помощью npm install.

Ответ 8

На всякий случай, если кто-то страдает от этого затруднительного положения и, случается, делает ту же ошибку асанина, что и я, вот что было в моем случае. После того, как я ударил головой о стену в течение часа, я понял, что мой json неправильно вложен, а ключевые "зависимости" находятся внутри ключевого "репозитория".
Излишне говорить, что ошибок не было, и никаких модулей не было установлено.

Ответ 9

Также убедитесь, что имя вашего пакета правильно принято:

НЕПРАВИЛЬНО:

{
    "name":"My Awesome Package"
}


ПРАВИЛЬНОЕ

{
    "name": "my-awesome-package-name"
}

Ответ 10

Вам может потребоваться установить grunt-cli, попробуйте это, прежде чем делать установку npm:

sudo npm install -g grunt-cli

Это исправление grunt не подходит для меня, вам также понадобится действительный файл grunt.

Источник: fooobar.com/questions/55972/...

Ответ 11

Другой способ обойти это - добавить это в раздел скриптов модуля package.json.

"preinstall": "npm install {Packages You depend on}"

то, что он хочет сделать, это установит все пакеты, необходимые модулю, и вы не получите эту ошибку.

Ответ 12

Я получал эту ошибку, когда я установил чистую среду Node dev на окна.

Чтобы исправить это, я вошел в свою новую директорию проекта (которую я только подставил с помощью yo angular) и набрал две команды:

npm install -g grunt --save-dev

Это установит локальные зависимости для вашего проекта. Далее:

npm install

Это обеспечит установку всех ваших (новых) зависимостей проекта.

Тада!

Ответ 13

происходит со старой версией узла. используйте последнюю версию узла следующим образом:

$ nvm use 8.0
$ rm -rf node_modules
$ npm install
$ npm i somemodule

редактировать: также убедитесь, что вы save.
Например: npm install yourmoduleName --save

Ответ 14

Стоит отметить, что ваши зависимости должны быть в dependencies части вашего package.json (в отличие от devDependencies).

Моя проблема была в основном такой же, как у OP:

  • установка частного репо (пусть его называют repo1) через "module-name": "git+ssh://[email protected]:user/my-repo-name.git" в другом репо (пусть его называют repo2),
  • в repo2 node_modules не было одной зависимости пакета от repo1.
  • Моя глупая ошибка!.. repo1 перечислял эту зависимость в devDependencies вместо dependencies
  • Переместите зависимость в моем repo1 package.json с devDependencies на dependencies
  • В моем repo2 я удалил свои node_modules и package-lock.json, сделал npm install, вуаля!... зависимость была!

Ответ 15

У меня была та же проблема. Но на одной машине у одного проекта был хороший пакет package.json, где все мои зависимости успешно установлены. И в другом проекте мои зависимости package.json не были установлены независимо от того, что я делаю. Я просто скопировал package.json и вставил в этот другой проект. И это сработало! Разница, которую я нашел, была пустой строкой в ​​начале файла. Не знаю, или это влияет на что-либо, может быть, на другую проблему. Но проблема была только в файле package.json.

Ответ 16

Я думаю, что я также столкнулся с этой проблемой, и лучшее решение, которое я нашел, было посмотреть на мою консоль и выяснить ошибку, которая была выдана. Итак, я внимательно прочитал его и обнаружил, что проблема заключалась в том, что я не указал свой репозиторий, описание и действительное имя в моем package.json. Я добавил эти фрагменты информации, и все было хорошо.