I'm running the latest 3.x in Docker as an npm proxy. I have two repos setup. One is just a proxy of https://registry.npmjs.org. The other is a npm group containing the proxy.
I found that jspm install npm:string_decoder was failing with a 404 response while npm install string_decoder was working.
The Nexus request log showed identical requests with one returning 404 and the other 200, so I enabled trace logging and observed that the jspm request was sending an If-None-Match: "3SLQP4XEWUIBONOV855WOPR0B" header while the npm request was not. Here is the full request that was logged:
This seems to be the reason for the difference in the response. Further in the log, I see:
I found that if I configured my npm registry to reference the proxy repository url directly, that jspm started to work. It was only with the group repository that the ETag 304 response was being turned into a 404. So it appears that something may be broken with how an npm group repository handles ETag headers.
A workaround is to just target the proxy repository directly or temporarily disable proxying through Nexus. (jspm only seems to have this problem for node core modules; other npm requests came through the group just fine, but presumably w/o etags...no clue why it's requesting core modules at all, but it must have some added local metadata for them that it's using to produce the If-None-Match header for its request.)