作为 npm 存储库的 Nexus 3 找不到某些依赖项:npm ERR! 404 未找到:
Nexus 3 as npm repository can't find some dependencies: npm ERR! 404 Not Found:
我正在使用 Nexus 3 作为 npm 私有存储库。我有一个项目需要一些依赖项,例如:@nodelib/fs.stat
、@mrmlnc/readdir-enhanced@^2.2.1
.
如果我执行以下 npm install 命令,一切正常:
sudo npm install -g @nodelib/fs.stat
+ @nodelib/fs.stat@1.1.0
added 1 package in 0.481s
sudo npm install -g @mrmlnc/readdir-enhanced@^2.2.1
+ @mrmlnc/readdir-enhanced@2.2.1
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
日志文件未提供额外信息。
来自这些依赖项的 Appart,运行 通过 npm repo 的一些其他安装工作正常事件:
sudo npm install -g jav
+ jav@1.0.2
added 71 packages in 9.628s
好像和deps的@命名有关,这里再举一个执行失败的例子:
npm install -g @angular/common@2.4.10
npm ERR! code E404
npm ERR! 404 Not Found: @angular/common@2.4.10
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
我该如何解决这个问题?
已修复此自定义 .npmrc 文件,该文件将 public 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/
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
我正在使用 Nexus 3 作为 npm 私有存储库。我有一个项目需要一些依赖项,例如:@nodelib/fs.stat
、@mrmlnc/readdir-enhanced@^2.2.1
.
如果我执行以下 npm install 命令,一切正常:
sudo npm install -g @nodelib/fs.stat
+ @nodelib/fs.stat@1.1.0
added 1 package in 0.481s
sudo npm install -g @mrmlnc/readdir-enhanced@^2.2.1
+ @mrmlnc/readdir-enhanced@2.2.1
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
日志文件未提供额外信息。
来自这些依赖项的 Appart,运行 通过 npm repo 的一些其他安装工作正常事件:
sudo npm install -g jav
+ jav@1.0.2
added 71 packages in 9.628s
好像和deps的@命名有关,这里再举一个执行失败的例子:
npm install -g @angular/common@2.4.10
npm ERR! code E404
npm ERR! 404 Not Found: @angular/common@2.4.10
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
我该如何解决这个问题?
已修复此自定义 .npmrc 文件,该文件将 public 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/
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