Подтвердить что ты не робот

NPM: после того, как модуль "npm link" не найден

Я разрабатываю два модуля для NodeJS, сначала один с именем aligator и второй aligator-methods. Второй из них зависит от того, какой из них будет работать. Я разрабатываю эти два модуля одновременно, и я хочу глобальную ссылку aligator, поэтому я могу использовать ее, как в реестре npm, и я только что установил ее по всему миру. Для выполнения этой документации NPM говорится, что мне нужно использовать npm link, но она не работает.

Файл package.json модуля aligator:

{
  "name": "aligator",
  "version": "0.0.1",
  "description": "",
  "main": "index.js",
  "private": true,
  "directories": {
    "doc": "docs",
    "example": "examples",
    "test": "spec"
  },
  "scripts": {
    "test": "gulp jasmine"
  },
  "author": "Roc Alayo Arnabat",
  "license": "MIT",
  "devDependencies": {
    "gulp": "^3.6.2",
    "gulp-jasmine": "^0.2.0",
    "gulp-jshint": "^1.6.1",
    "gulp-rename": "^1.2.0",
    "jasmine-node": "^1.14.3"
  },
  "dependencies": {
    "bluebird": "^1.2.4",
    "lodash": "^2.4.1",
    "mathjs": "^0.22.0"
  }
}

Файл package.json модуля aligator-methods:

{
 "name": "aligator-methods",
 "version": "0.0.1",
 "description": "",
 "main": "index.js",
 "private": true,
 "directories": {
   "doc": "docs",
   "example": "examples",
   "test": "jasmine"
 },
 "scripts": {
   "test": "gulp jasmine"
 },
 "author": "",
 "license": "MIT",
 "devDependencies": {
   "gulp": "^3.6.2",
   "gulp-jasmine": "^0.2.0",
   "gulp-jshint": "^1.6.1",
   "gulp-rename": "^1.2.0",
   "jasmine-node": "^1.14.3"
 },
 "dependencies": {
   "lodash": "^2.4.1",
   "mathjs": "^0.22.0",
   "aligator": "^0.0.1"
 }
}

Прежде всего, я связал модуль по всему миру:

$ cd ~/aligator
$ npm link
/usr/local/lib/node_modules/aligator -> /Users/roc/aligator

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

Затем я перешел к другому модулю и попытался установить зависимость, но дал мне этот результат:

$ cd ~/aligator-methods
$ npm install
npm ERR! 404 404 Not Found: aligator
npm ERR! 404
npm ERR! 404 'aligator' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it
npm ERR! 404 It was specified as a dependency of 'aligator-methods'
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, or http url, or git url.

npm ERR! System Darwin 13.2.0
npm ERR! command "node" "/usr/local/bin/npm" "install"
npm ERR! cwd /Users/roc/aligator-methods
npm ERR! node -v v0.10.28
npm ERR! npm -v 1.4.16
npm ERR! code E404
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/roc/aligator-methods/npm-debug.log
npm ERR! not ok code 0

Я даже попытался связать его напрямую:

$ cd ~/aligator-methods
$ npm link aligator
/Users/roc/aligator-methods/node_modules/aligator -> /usr/local/lib/node_modules/aligator -> /Users/roc/aligator

Но это тоже не сработало.

Любые мысли о том, что это может произойти? Я где-то читал, что, возможно, это как-то связано с моей установкой node и npm, потому что это было сделано Homebrew, и поэтому иногда мне нужно использовать sudo, это казалось маловероятным, но я пробовал то, что они предлагали, и он тоже не работал.

Изменить: решение моей конкретной проблемы

В моем случае проблема заключалась в том, что свойство main package.json указывало на несуществующий файл.

4b9b3361

Ответ 1

Я столкнулся с этой проблемой из-за NVM, я использовал одну версию node для зависимости, а другую для зависимой.

Ответ 2

При первом запуске npm link из каталога aligator вы создаете ссылку из глобального каталога node_modules на aligator. Затем, когда вы запускаете npm link aligator из каталога aligator-methods, вы связываете aligator с локально установленным node_modules с исходным исходным кодом (как показывает результат в вашем примере выше). Как только это будет сделано, не нужно устанавливать больше, поскольку он уже "установлен". Какие ошибки вы видите после запуска команды npm link aligator?

Если вы просто хотите установить зависимость из локального каталога, попробуйте вместо этого использовать npm install. Например:

$cd ~/aligator-methods
$ npm install../aligator

Ответ 3

Удаление package-lock.json запуск npm install снова решили эту проблему для меня.

Ответ 4

Для меня это произошло, когда я уменьшил номер версии моего локального пакета с 0.1.0 до 0.0.1. И в проектах, в которых я связан с этим пакетом, я все еще использовал номер более высокой версии. Обновление зависимостей в package.json исправлено.

Ответ 5

Исправить мою версию этой проблемы; в npm v5.3.0, я удалил node_modules из repo, я связался с другим проектом.

Я выяснил, что после npm v3 они пытаются поместить все зависимости node_modules в один каталог node_modules (один в вашем проекте), чтобы максимально сгладить структуру (http://codetunnel.io/npm-5-changes-to-npm-link/).

Ответ 6

Для меня решение заключалось в том, что в моей инструкции require была опечатка.

require('my_liberry')

Как только я набрал правильную вещь, она сработала.

Ответ 7

То, что работало для меня, было:

  1. Удалите node_modules как в модуле зависимости, так и в модуле-потребителе.
  2. Запустите npm unlink --no-save [dependency-module]
  3. повторно связать с командами с 2 связями согласно ссылке npm

Теперь я могу полностью проверить мой неопубликованный модуль локально.

Кроме того, есть команда npm pack, которая может помочь вам протестировать неопубликованные модули, хотя и не такие надежные.

NPM-пак

Ответ 8

Спасибо за вопрос. Была та же проблема - мое основное свойство не указывало на существующий файл.