【问题标题】:Installing scoped npm packages from Artifactory从 Artifactory 安装作用域 npm 包
【发布时间】:2016-11-29 15:58:00
【问题描述】:

我正在尝试让范围内的 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,在tomcat的catalina.properties文件中添加了org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true

我错过了什么吗?

【问题讨论】:

    标签: node.js apache tomcat npm artifactory


    【解决方案1】:

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

    你必须改变两件事:

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

    【讨论】:

    • 感谢您的回复,我使用的是 apache 而不是 nginx。你是说它应该返回一个“/”还是一个“%2F”?
    • 它应该以“/”的形式返回即使你没有使用 Nginx,看看 Apache 中是否有类似的设置。您可能在 Apache 上运行 artifactory,但我相信 Artifactory 默认也使用 Nginx 作为反向代理。如果 Apache 两者都处理,那么检查看看是否有类似的设置。
    • 它应该看起来像 %2F
    猜你喜欢
    • 1970-01-01
    • 2019-11-02
    • 2017-11-26
    • 1970-01-01
    • 2015-07-09
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多