Installing scoped npm packages from Artifactory

I am trying to get scoped npm packages to work with Artifactory behind Apache. I can publish a scoped package to Artifactory and it creates the following path in the npm-local repo: @scopename/packagename/-/@scopename/packagename-version.tgz

My problems arise trying to install this package. I get a 404 Not Found: @scopename/packagename. Looking at the debug log I can see that maybe it has something to do with the encoding of the slashes:

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

I have followed the online documentation. I added AllowEncodedSlashes NoDecode to the virtual host and org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true to the catalina.properties file on tomcat.

Am I missing something?


Solution 1:

This looks like a reverse proxy issue. Check your request.log. If the request is coming is as /api/npm/npm-group/@angular/core instead of /api/npm/npm-group/@angular%2Fcore, that is something that need to addressed in your reverse proxy.

You have to change two things:

  1. Implement the setting org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH = true
  2. Remove of the context root from the proxy_pass variable in /etc/nginx/conf.d/default.conf