1
votes

Le NPM étendu pour le référentiel privé convertit la barre oblique "/" en "% 2F"

Je voudrais récupérer le npm privé à partir du dépôt privé en utilisant des étendues. J'ai défini le .npmrc comme tel.

https://nexus.myco.com/nexus/repository/myco/some-private-npm

J'ai défini le .yarnrc comme tel.

verbose 0.957 Request "https://nexus.myco.com/nexus/repository/@myco:some-private-npm" finished with status code 400.

Mais quand je le fais:

 yarn --verbose add @myco:some-private-npm

Cela génère cette erreur:

verbose 0.708 Performing "GET" request to "https://nexus.myco.com/nexus/repository/@myco%2fsome-private-npm".
verbose 0.792 Request "https://nexus.myco.com/nexus/repository/@myco%2fsome-private-npm" finished with status code 404.

Quand je le fais:

yarn --verbose add @myco/some-private-npm

Il va à cette URL 400 (Nexus: chemin de dépôt non valide):

registry "https://registry.npmjs.org/"
"@myco:registry" "https://nexus.myco.com/nexus/repository/"

Le npm réel se trouve à:

registry=https://registry.npmjs.org/
@myco:registry=https://nexus.myco.com/nexus/repository/


0 commentaires

4 Réponses :


1
votes

Pour ce problème Github pour yarn, essayez d'ajouter une configuration similaire à votre .yarnrc :

registry "https://registry.npmjs.org/"
"@myco:registry" "https://nexus.myco.com/nexus/repository/"

À défaut, je recommande de parcourir le problème lié et d'essayer les solutions fournies.


4 commentaires

Merci Klaycon, j'ai également traversé le problème de github et je suis très proche de mon problème. J'ai le .yarnrc avec des guillemets, le problème persiste. [la configuration de yarnrc supprimée car le commentaire ne se met pas en forme correctement]


@PH. Avez-vous également essayé d'installer avec un: au lieu de /, c'est-à-dire yarn --verbose add @myco: some-private-npm ?


J'ai essayé mais il jette une erreur 400 Chemin du référentiel invalide. Mise à jour du réel dans le Q.


Je marquerai ceci comme la réponse car c'est la solution la plus proche. Il y en a avec le même problème qui ont ce problème non résolu dans le problème github.



0
votes

Un autre scénario possible est que l'encodage slash n'est pas vraiment le problème. Vous n'avez tout simplement pas accès à ce référentiel spécifique.

Cela expliquerait le 404, car si vous n'y avez pas accès, pour des raisons de sécurité, c'est comme s'il n'existait pas, vous n'obtiendrez pas de 401.


0 commentaires

0
votes

J'ai trouvé cette page en essayant également d'exécuter npm publish d'un fichier .tgz dans Github Actions, et en obtenant ce qui suit (champ et package remplacés):

      - name: Setup Node.js environment
        uses: actions/setup-node@v2.1.2
        with:
          node-version: '12'
          registry-url: 'https://registry.npmjs.org'
        
      - name: Publish to npmjs
        run: |
          npm install
          npm run pack
          npm publish <package tgz> --access public
        env:
          NPM_TOKEN: ${{ secrets.NPM_APIKEY }}
          NODE_AUTH_TOKEN: ${{ secrets.NPM_APIKEY }}

Ce package EST publié, j'ai donc pensé que le% 2f était à l'origine du problème. J'utilisais également NPM_TOKEN comme variable d'environnement, selon documentation npmjs .

Solution:

npm ERR! 404 Not Found - PUT https://registry.npmjs.org/@SCOPE%2fPACKAGE - Not found
npm ERR! 404 
npm ERR! 404  '@SCOPE/PACKAGE@0.0.5' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)

via Documentation Github .

REMARQUE: je ne suis pas sûr que NPM_TOKEN soit toujours requis ici.


0 commentaires

0
votes

J'ai rencontré exactement le même problème il y a quelque temps. vérifiez chez NPM si le niveau d'accès de votre équipe de référentiel est en lecture / écriture. De mon côté, l'équipe dans laquelle j'étais n'avait qu'un niveau d'accès en lecture. La commutation a résolu le problème.


1 commentaires

Je suggérerais d'ajouter quelques exemples, commandes, quelques sources sur le sujet. N'oubliez pas que votre réponse peut être utile à plus que la personne demandée.