我想使用作用域从私有存储库中获取私有npm。 我已经将.npmrc设置为这样。
registry=https://registry.npmjs.org/
@myco:registry=https://nexus.myco.com/nexus/repository/
我已经将.yarnrc设置为这样。
registry "https://registry.npmjs.org/"
"@myco:registry" "https://nexus.myco.com/nexus/repository/"
但是当我这样做时:
yarn --verbose add @myco/some-private-npm
它抛出此错误:
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.
当我这样做时:
yarn --verbose add @myco:some-private-npm
它转到以下400个网址(Nexus:无效的存储库路径):
verbose 0.957 Request "https://nexus.myco.com/nexus/repository/@myco:some-private-npm" finished with status code 400.
实际npm位于:
https://nexus.myco.com/nexus/repository/myco/some-private-npm
如何确保获取的网址没有“ @”并且“%2f”是“ /”?
谢谢!
答案 0 :(得分:1)
对于纱线,每this github issue,请尝试向您的.yarnrc添加类似的配置:
registry "https://registry.npmjs.org/"
"@myco:registry" "https://nexus.myco.com/nexus/repository/"
否则,我建议仔细阅读链接的问题并尝试提供的解决方案。
答案 1 :(得分:0)
另一种可能的情况是,斜杠编码并不是真正的问题。您根本无权访问该特定存储库。
这将解释404,因为如果出于安全原因您没有访问权限,就好像它不存在,您就不会获得401。
答案 2 :(得分:0)
我还尝试在Github Actions中运行.tgz文件的npm publish
并获得以下内容(替换范围和包)时,找到了此页面:
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!)
此软件包 IS 已发布,因此我认为%2f引起了该问题。根据{{3}},我也使用NPM_TOKEN作为环境变量。
解决方案:
- 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 }}
注意:我不确定此处是否仍需要NPM_TOKEN。
答案 3 :(得分:0)
前段时间,我遇到了完全相同的问题。 在NPM处检查您的存储库团队访问级别是否为读/写。 在我这边,我所在的团队只有读访问级别。切换解决了这个问题。