Локальная зависимость от npm прервана, начиная с версии npm v5.5.1 - PullRequest
0 голосов
/ 12 сентября 2018

В нашем package.json мы используем обозначение файла для ссылки на наши собственные разработанные частные модули, например:

"dependencies": {
  "privateX": "file:////serverName/path/to/privateX",
  "privateY": "file:////serverName/path/to/privateY"
}

Это работало нормально до npm v4.2.0 (с Node v7.10.1). После обновления до npm v5.5.1 (с Node.js 8.9.0 LTS) мы больше не можем их устанавливать (npm install) и получаем следующую ошибку:

npm ERR! code ENOLOCAL
npm ERR! Could not install from "..\..\serverName\path\to\privateX" as it does not contain a package.json file.

Я пробовал разные подходы, например, которые тоже не работали:

  • "privateX": "file: // имя_сервера / путь / к / privateX"
  • "privateX": "file: \\\\ имя_сервера \\ path \\ to \\ privateX"

очистка кэша npm --force не помогло.

Работало только размещение зависимостей на каждом сервере и использование относительного пути. Но это неосуществимо:

  • "privateX": "file: //../../path/to/privateX"

Когда мы возвращаемся к npm v4.2.0 или ниже, он снова работает. Что произошло с той версии, что привело к нарушению доступа к другому серверу в той же сети? Или как будет выглядеть подход для ссылки на зависимости на другом сервере в той же сети, в npm 5.x.x и выше?

Наши частные модули расположены на сервере в нашей сети. Все серверы работают на Windows.

1 Ответ

0 голосов
/ 25 сентября 2018

Самый простой обходной путь, который я смог найти, - это использовать подключенный диск вместо имени сервера или пути UNC.

  1. Создайте подключенный диск, например G :, ссылаясь на serverName.
  2. Изменение зависимостей модуля в package.json всех приватных модулей.

    "privateX": "file://G:/path/to/privateX"
    

Это не лучшее решение, но оно работает. Как для локальной, так и для глобальной установки.

...