Установка npm после npm, ссылка на локальный модуль вызывает ошибку: не найдено

В файле package.json модуля-A модуль-B указан как зависимость

  "dependencies": {
    "@mynamespace/module-b": "^0.0.1",

модуль B является локальным модулем и успешно связан с модулем A npm link, Компиляция / запуск вещей все идет хорошо и хорошо.

Однако, когда я пытаюсь установить любой новый модуль в модуль с npm install something или просто беги npm install или же npm uninstall something Я всегда получаю сообщение об ошибке от npm, что локальный модуль (который называется npm link-ed) не найден.

C:\web\module-b>npm install
npm ERR! code E404
npm ERR! 404 Not Found: @mynamespace/module-b@^0.0.1

Я проверил main недвижимость в package.json в обоих модулях, как предлагается здесь. Есть несколько похожих вопросов, но ни один, кажется, не является именно этой проблемой или решением, которое работает.

Прямо сейчас я вручную удаляю все упоминания связанных модулей из package.json, затем запускаю команды npm и затем добавляю их обратно в package.json.

Я использую нпм 6.1.0

Редактировать: Ах, это может иметь решающее значение? @mynamespace/module-b еще не существует в реестре NPM, только локально

1 ответ

Прямо сейчас я вручную удаляю все упоминания связанных модулей из package.json, затем запускаю команды npm и затем добавляю их обратно в package.json.

К сожалению, это единственный способ, которым это может работать. npm install всегда будет искать в реестре npm, если вы укажете только версию (т.е. "@mynamespace/module-b": "^0.0.1", или же "*") так работает npm install переопределит то, что у вас есть в node_modules вашего проекта с тем, что он находит в реестре npm (или выбросить 404 в этом случае).

Предполагая, что вы прочитали эту статью, нет возможности использовать npm link метод, а также запустить npm install, Для этого вам нужно будет явно указать путь к локальному пакету в вашем основном проекте package.json (а затем измените его обратно, когда вы опубликовали свой пакет).

"зависимости": {
  "@mynamespace/module-b": "file:../../module-b",
},

Надеюсь, это поможет.

Npm может сделать это автоматически, если вы добавите сценарий "install" в package.json, который запускается сразу после установки npm.

"scripts": {
    "install": "npm link <your package>"
},

ОП здесь. Недавно я перешел на пряжу, которая очень совместима с npm. В Yarn есть такая вещь, как рабочие области, которая намного лучше справляется со всей проблемой связывания. С момента переключения не было никаких проблем, подобных описанным выше.

Удаление package-lock.json а затем бег npm link <package_name><local_package_path> исправлена ​​ошибка.

Другие вопросы по тегам