我正在尝试使范围限定的npm软件包与Apache背后的Artifactory一起使用。我可以将范围界定的包发布到Artifactory,它会在npm- local存储库中创建以下路径:@scopename/packagename/-/@scopename/packagename-version.tgz
@scopename/packagename/-/@scopename/packagename-version.tgz
尝试安装此软件包时出现了我的问题。我得到一个404 Not Found: @scopename/packagename。查看调试日志,我可以发现它可能与斜杠的编码有关:
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=truetomcat上的catalina.properties文件。
AllowEncodedSlashes NoDecode
org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
我想念什么吗?
这看起来像是反向代理问题。检查您的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变量中删除上下文根