Nexus 3 как репозиторий npm не может найти некоторые зависимости: npm ERR! 404 Не Найдено:

Я использую Nexus 3 как частный репозиторий npm. У меня есть проект, требующий некоторых зависимостей, например: @nodelib/fs.stat, @mrmlnc/readdir-enhanced@^2.2.1.

Если я выполню следующие команды установки npm, все будет работать нормально:

sudo npm install -g @nodelib/fs.stat
+ @nodelib/[email protected]
added 1 package in 0.481s

sudo npm install -g @mrmlnc/readdir-enhanced@^2.2.1
+ @mrmlnc/[email protected]
added 3 packages in 2.178s

Но мне нужно настроить .npmrc для ссылки на мой репозиторий nexus npm следующим образом:

~ / .npmrc:

registry=http://mynexus.com/repository/npmrepo

Теперь, когда я пытаюсь установить свой частный проект npm install -g generator-myyeomangenerator, если это не удается, потому что он не может загрузить эти зависимости.

Фактически, теперь, когда я настроил свою конфигурацию .npmrc, если я напрямую выполняю npm install для этих зависимостей, я получаю 404:

sudo npm install -g @nodelib/fs.stat
npm ERR! code E404
npm ERR! 404 Not Found: @nodelib/fs.stat@latest

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/myuser/.npm/_logs/2018-06-04T21_55_56_792Z-debug.log

Файл журнала не предоставляет дополнительной информации.

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

sudo npm install -g jav
+ [email protected]
added 71 packages in 9.628s

Похоже, это связано с @ именованием deps, вот еще один пример неудачного выполнения:

npm install -g @angular/[email protected]
npm ERR! code E404
npm ERR! 404 Not Found: @angular/[email protected]

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/myuser/.npm/_logs/2018-06-04T22_01_02_384Z-debug.log

Как я могу это исправить?


person codependent    schedule 04.06.2018    source источник


Ответы (2)


Исправлено с помощью этого настраиваемого файла .npmrc, который использует общедоступный репозиторий npm для тех пакетов с ограниченной областью действия, которые не могут быть разрешены через Nexus:

@angular:registry=https://registry.npmjs.org/
@nodelib:registry=https://registry.npmjs.org/
@mrmlnc:registry=https://registry.npmjs.org/
registry=http://mynexus.com/repository/npmrepo/
person codependent    schedule 04.06.2018
comment
Означает ли это, что пакеты с ограниченной областью видимости нельзя использовать с частным реестром Nexus? - person danwellman; 04.11.2019
comment
@danwellman, ты нашел ответ на свой вопрос ?? - person Luis Limas; 22.07.2020
comment
Извините, я не помню - это было на предыдущей работе, значит, в предыдущей жизни! - person danwellman; 27.07.2020

Apache работает перед Nexus? По умолчанию он не разрешает прохождение закодированных косых черт, это прерывает получение пакетов с областью действия npm.

Чтобы исправить это, добавьте в конфигурацию Apache следующее:

# Solution for Apache httpd < 2.0.52
AllowEncodedSlashes On

# Solution for Apache httpd 2.0.52 to 2.2.8 
AllowEncodedSlashes NoDecode
# The ProxyPass directive may need the nocanon option, as shown below :
ProxyPass / http://localhost:8081/ nocanon

Подробнее см. Здесь: https://issues.sonatype.org/browse/NEXUS-10570

person rseddon    schedule 05.06.2018
comment
Спасибо за информацию, я думаю, что перед ним сервер Apache, я его проверю. - person codependent; 05.06.2018