从 Artifactory 安装范围内的 npm 包

d.g*_*ner 5 apache tomcat artifactory node.js npm

我正在尝试让范围内的 npm 包与 Apache 背后的 Artifactory 一起使用。我可以将范围包发布到 Artifactory,它会在 npm-local 存储库中创建以下路径:@scopename/packagename/-/@scopename/packagename-version.tgz

我在尝试安装此软件包时出现问题。我得到一个404 Not Found: @scopename/packagename. 查看调试日志,我可以发现它可能与斜杠的编码有关:

22 http request GET https://artifacts.company.com/artifactory/api/npm/npm-local/@scopename%2fpackagename
23 http 404 https://artifacts.company.com/artifactory/api/npm/npm-local/@scopename%2fpackagename
Run Code Online (Sandbox Code Playgroud)

我已遵循在线文档。我添加AllowEncodedSlashes NoDecode到虚拟主机和org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=truetomcat 上的 catalina.properties 文件。

我错过了什么吗?

imt*_*hvu 3

这看起来像是反向代理问题。检查你的request.log。如果请求是 as/api/npm/npm-group/@angular/core而不是/api/npm/npm-group/@angular%2Fcore,则需要在反向代理中解决这一问题。

你必须改变两件事:

  1. 执行设置org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH = true
  2. proxy_pass从变量中删除上下文根/etc/nginx/conf.d/default.conf