这个问题与此有关。但是没有一种解决方案对我有用。
我可以安装软件包,而不会出现npm install @scope/package
的问题,但是我无法对yarn:yarn add @scope/package
纱线引发以下错误:
An unexpected error occurred: "https://npm.pkg.github.com/download/@scope/package/1.2.8/089b08cffb16074c210ec3a59b04de268ae1c7b3a0492dce110adee3ada05bdd: Request failed \"401 Unauthorized\"".
我的.npmrc文件看起来像这样:(尝试在.yarnrc下使用和不使用)
registry=https://registry.npmjs.org/
//npm.pkg.github.com/:_authToken=MY_AUTHTOKEN
@scope:registry=https://npm.pkg.github.com/
我尝试添加此.yarnrc文件:
registry "https://registry.npmjs.org"
"@scope:registry" "https://npm.pkg.github.com"
(没有.yarnrc)我已经尝试过此.npmrc文件
registry=https://registry.yarnpkg.com/
@scope:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=MY_AUTHTOKEN
always-auth=true
MY_AUTHTOKEN
是我从Github生成的Personal Access Token
。 (它可以访问软件包中的所有内容)
我试图:
npm login
登录yarn login
登录如有任何混淆 我实际上不是在尝试@scope和/ package,而是我的实际作用域和程序包名称。
我确实可以访问Github上的范围和软件包。
再次,我的第一个设置在npm下也可以正常工作。但是我无法在纱线上使用它,也无法在SO上找到任何有效的现有解决方案。
答案 0 :(得分:5)
您仅需在具有以下内容的项目根目录中使用 .npmrc :
//npm.pkg.github.com/:_authToken=GITHUB_PERSONAL_TOKEN
@OWNER:registry=https://npm.pkg.github.com
请记住, GITHUB_PERSONAL_TOKEN 需要 read:packages 作用域权限,才能从您的私人存储库中读取软件包。
答案 1 :(得分:3)
以下内容在.npmrc
@mvce-superstars:registry=https://npm.pkg.github.com
以下使用yarn v2在.yarnrc.yml
中为我工作:
npmScopes:
"mvce-superstars":
npmAlwaysAuth: true
npmRegistryServer: "https://npm.pkg.github.com"
首先,请注意小写范围名称。这应该是发布程序包的存储库(MVCE-Superstars
)的所有者的名称,但是名称必须全部小写。
.npmrc
OR .yarnrc.yml
文件复制到仓库中。npm login --registry=https://npm.pkg.github.com/
OR yarn npm login --scope=mvce-superstars
命令登录read:package
,write:package
和repo
)npm publish
OR yarn npm publish
npm notice
npm notice ? @mvce-superstars/hello-world-npm@1.1.1
npm notice === Tarball Contents ===
npm notice 16.3kB example.gif
npm notice 89B bin.js
npm notice 175B lib/index.js
npm notice 734B package.json
npm notice 2.0kB yarn-error.log
npm notice 570B Readme.md
npm notice 167B init.sh
npm notice === Tarball Details ===
npm notice name: @mvce-superstars/hello-world-npm
npm notice version: 1.1.1
npm notice package size: 14.3 kB
npm notice unpacked size: 20.0 kB
npm notice shasum: 5379c8030fa9c5f57e5baef67f2a8a784ce93361
npm notice integrity: sha512-FAI/Wuy4gHW8C[...]FINQeIlZ+HDdg==
npm notice total files: 7
npm notice
+ @mvce-superstars/hello-world-npm@1.1.1
npm init
(use-hello-world-npm
)创建一个新的npm项目.npmrc
复制到文件夹的根目录npm logout --registry=https://npm.pkg.github.com/
)并重新登录(npm login --registry=https://npm.pkg.github.com/
),以确保yarn
并按预期运行了!yarn install v1.22.4
info No lockfile found.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
Done in 0.55s.
纱线v2
➤ YN0000: ┌ Resolution step
➤ YN0014: │ @mvce-superstars/hello-world-npm@npm:^1.1.1: Only some patterns can be imported from legacy lockfiles (not "https://npm.pkg.github.com/download/@mvce-superstars/hello-world-npm/1.1.1/426126f89734c2c76bfac0342c1de9c95ad003b6e905a7b9f9f745892c86da7a#5379c8030fa9c5f57e5baef67f2a8a784ce93361")
➤ YN0000: └ Completed in 0.55s
➤ YN0000: ┌ Fetch step
➤ YN0013: │ @mvce-superstars/hello-world-npm@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40mvce-superstars%2Fhello-world-npm%2F1.1.1%2F426126f89734c2c76bfac0342c1de9c95ad003b6e905a7b9f9f745892c86da7a can't be found in the cache and will be fetched from the remote server
➤ YN0000: └ Completed in 1.3s
➤ YN0000: ┌ Link step
➤ YN0031: │ One or more node_modules have been detected and will be removed. This operation may take some time.
➤ YN0000: └ Completed
➤ YN0000: Done with warnings in 1.87s
yarn
之后的文件夹内容.
├── node_modules
│ └── @mvce-superstars
├── package.json
└── yarn.lock
为了很好,我将其删除(yarn remove @mvce-superstars/hello-world-npm
):
yarn remove v1.22.4
[1/2] Removing module @mvce-superstars/hello-world-npm...
[2/2] Regenerating lockfile and installing missing dependencies...
success Uninstalled packages.
Done in 0.06s.
并再次添加(yarn add @mvce-superstars/hello-world-npm
):
yarn add v1.22.4
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
success Saved 1 new dependency.
info Direct dependencies
└─ @mvce-superstars/hello-world-npm@1.1.1
info All dependencies
└─ @mvce-superstars/hello-world-npm@1.1.1
Done in 1.08s.
该存储库位于here,因此,如果您想亲自查看它是按照我解释的方式工作的,请在github上用您的用户名发表评论,然后我将向您发送邀请。 / em>
答案 2 :(得分:0)
我在这里添加一个答案是因为经过一天在这里和其他地方尝试不同解决方案的变化之后,我发现我的问题是另外一回事。
我的问题是,尽管npm
在程序包名称方面不区分大小写,但在认证方面,yarn
是 ! ?♂️
因此,使用this solution中的示例:
registry=https://registry.yarnpkg.com/
@GITHUB_USERNAME:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=AUTH_TOKEN
always-auth=true
我需要确保两件事:
@GITHUB_USERNAME
需要 以匹配您在github上看到的情况以及发布该软件包的名称。也就是说,如果您的用户名是Pickle-Rick,则需要输入@Pickle-Rick:registry=https://npm.pkg.github.com
,而不是@pickle-rick
或@Pickle-rick
。
您需要在package.json
或yarn add
命令(无论使用哪种)中匹配此大小写。例如:
"@Pickle-Rick/schwifty": "^1.0.0"
在package.json
或yarn add @Pickle-Rick/schwifty
中。
我通过深入研究yarn
github issues找到了这个解决方案。