从 Artifactory 安装 scoped npm 包
Installing scoped npm packages from Artifactory
我正在尝试让范围内的 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
我已按照在线文档进行操作。我将 AllowEncodedSlashes NoDecode
添加到虚拟主机,并将 org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
添加到 tomcat 上的 catalina.properties 文件。
我是不是漏掉了什么?
这看起来像是反向代理问题。检查你的 request.log
。如果请求是 /api/npm/npm-group/@angular/core
而不是 /api/npm/npm-group/@angular%2Fcore
,则需要在您的反向代理中解决这个问题。
你必须改变两件事:
- 执行设置
org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH = true
- 从
/etc/nginx/conf.d/default.conf
中的 proxy_pass
变量中删除上下文根
我正在尝试让范围内的 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
我已按照在线文档进行操作。我将 AllowEncodedSlashes NoDecode
添加到虚拟主机,并将 org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
添加到 tomcat 上的 catalina.properties 文件。
我是不是漏掉了什么?
这看起来像是反向代理问题。检查你的 request.log
。如果请求是 /api/npm/npm-group/@angular/core
而不是 /api/npm/npm-group/@angular%2Fcore
,则需要在您的反向代理中解决这个问题。
你必须改变两件事:
- 执行设置
org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH = true
- 从
/etc/nginx/conf.d/default.conf
中的
proxy_pass
变量中删除上下文根