使用 Nexus 3.2 通过代理限定 NPM 项目的范围
Scoped NPM projects via proxy with Nexus 3.2
我目前一直在设置 Nexus 3.2,尤其是 NPM 存储库。我有一个指向 registry.npmjs.org
的代理存储库 我已成功发布到同一实例上的托管存储库,并使用 npm update -g
.
通过实例上的组存储库下载工件
不幸的是,无法通过群组下载范围内的项目,这对于进行 Angular 2 开发至关重要。当我尝试时,出现 404 错误:
brian$ npm install "@angular/common"
npm ERR! registry error parsing json
npm ERR! Unexpected token < in JSON at position 0
npm ERR! <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
npm ERR! <html><head>
npm ERR! <title>404 Not Found</title>
npm ERR! </head><body>
npm ERR! <h1>Not Found</h1>
npm ERR! <p>The requested URL /nexus/repository/npm_group/@angular/common was not found on this server.</p>
npm ERR! </body></html>
npm ERR!
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/brian/.npm/_logs/2017-03-28T07_38_37_824Z-debug.log
范围是 3.x 的一项备受推崇的功能,我很高兴它们大部分都在工作。因为我可以发布到受保护的存储库并且代理存储库中填充了非范围依赖项,所以我认为我非常接近。我该如何调试?
FWIW,我在 Apache HTTPd 服务器后面安装了 Nexus:
ProxyPass /nexus http://dev.example.com:8081/nexus nocanon
ProxyPassReverse /nexus http://dev.example.com:8081/nexus
AllowEncodedSlashes On
<Location /nexus>
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
</Location>
谢谢!
已解决: This SO answer 涵盖了使用 AllowEncodedSlashes
:
的细微差别
Bug 46830: If AllowEncodedSlashes On is set in the global context, it is not inherited by virtual hosts. You must explicitly set AllowEncodedSlashes On in every container.
因为我有上面的配置,在我的范围内添加 AllowEncodedSlashes
是不正确的,它需要放在 SSL 的 VirtualHost
范围内。在我的例子中,那是 NSS 模块(因为我有由 FreeIPA 更新的证书)。
更改后一切正常。
我目前一直在设置 Nexus 3.2,尤其是 NPM 存储库。我有一个指向 registry.npmjs.org
的代理存储库 我已成功发布到同一实例上的托管存储库,并使用 npm update -g
.
不幸的是,无法通过群组下载范围内的项目,这对于进行 Angular 2 开发至关重要。当我尝试时,出现 404 错误:
brian$ npm install "@angular/common"
npm ERR! registry error parsing json
npm ERR! Unexpected token < in JSON at position 0
npm ERR! <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
npm ERR! <html><head>
npm ERR! <title>404 Not Found</title>
npm ERR! </head><body>
npm ERR! <h1>Not Found</h1>
npm ERR! <p>The requested URL /nexus/repository/npm_group/@angular/common was not found on this server.</p>
npm ERR! </body></html>
npm ERR!
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/brian/.npm/_logs/2017-03-28T07_38_37_824Z-debug.log
范围是 3.x 的一项备受推崇的功能,我很高兴它们大部分都在工作。因为我可以发布到受保护的存储库并且代理存储库中填充了非范围依赖项,所以我认为我非常接近。我该如何调试?
FWIW,我在 Apache HTTPd 服务器后面安装了 Nexus:
ProxyPass /nexus http://dev.example.com:8081/nexus nocanon
ProxyPassReverse /nexus http://dev.example.com:8081/nexus
AllowEncodedSlashes On
<Location /nexus>
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
</Location>
谢谢!
已解决: This SO answer 涵盖了使用 AllowEncodedSlashes
:
Bug 46830: If AllowEncodedSlashes On is set in the global context, it is not inherited by virtual hosts. You must explicitly set AllowEncodedSlashes On in every container.
因为我有上面的配置,在我的范围内添加 AllowEncodedSlashes
是不正确的,它需要放在 SSL 的 VirtualHost
范围内。在我的例子中,那是 NSS 模块(因为我有由 FreeIPA 更新的证书)。
更改后一切正常。