2016-11-29 167 views
2

我试图让scoped npm包与Apache后面的Artifactory一起工作。我可以发布一个范围包到Artifactory,它会在npm-local repo中创建以下路径:@scopename/packagename/-/@scopename/packagename-version.tgz从Artifactory安装scoped npm包

尝试安装此软件包时出现问题。我得到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文件。

我错过了什么吗?

回答

2

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

你必须改变两两件事: 贯彻设置org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH =真 并从/etc/nginx/conf.d的proxy_pass变量的上下文根去除/default.conf

+0

谢谢你的回应,我使用apache而不是nginx。你是说它应该回来一个“/”或“%2F”? –

+0

它应该回来作为“/” 即使你不使用Nginx,看看在Apache中是否有类似的设置。你可能在Apache上运行artifactory,但我相信Artifactory默认使用Nginx作为反向代理。如果Apache正在处理两者,请检查并查看是否有类似的设置。 – imthinhvu

+0

它应该看起来像%2F一路 –