我正在尝试配置一个项目以从 NPM 安装依赖项。我将把项目作为私有包发布到 GitHub Packages。如果我在我的项目中使用此语法.npmrc
:
@my-org:registry=https://npm.pkg.github.com/
Run Code Online (Sandbox Code Playgroud)
我可以npm install
在本地机器上使用 NPM 安装依赖项。但是,我无法使用npm publish
. NPM 通知我我没有通过身份验证。如果我在我的项目中使用此语法.npmrc
:
registry=https://npm.pkg.github.com/my-org/
Run Code Online (Sandbox Code Playgroud)
我可以使用 发布npm publish
,但无法使用npm install
. NPM 通知我它正在尝试从 GitHub 包而不是 NPM 安装依赖项。
根据我的阅读,这两种语法都应该与npm install
和兼容npm publish
。但是,根据我的预期用途,我似乎只能使用其中一种。
通过nvm安装 Nodev15.7.0
和 NPM 。7.4.3
使用以下命令登录 GitHub Packages:
@my-org:registry=https://npm.pkg.github.com/
Run Code Online (Sandbox Code Playgroud)
检查我们~/.npmrc
的主文件夹中的文件。它应该是:
@my-org:registry=https://npm.pkg.github.com/
//npm.pkg.github.com/:_authToken=<auth-token-used-for-login>
Run Code Online (Sandbox Code Playgroud)
使用以下内容创建项目package.json
:
registry=https://npm.pkg.github.com/my-org/
Run Code Online (Sandbox Code Playgroud)
将以下内容添加.npmrc
到我们的项目中:
@my-org:registry=https://npm.pkg.github.com/
Run Code Online (Sandbox Code Playgroud)
运行npm install
。安装应该成功。
运行npm publish
。收到以下错误:
npm login --scope=@my-org --registry=https://npm.pkg.github.com
Run Code Online (Sandbox Code Playgroud)
将项目更改.npmrc
为:
registry=https://npm.pkg.github.com/my-org/
Run Code Online (Sandbox Code Playgroud)
运行npm publish
。发布应该成功。
rm -rf node_modules/ package-lock.json
在项目中。
运行npm install
。收到以下错误:
npm ERR! code E401
npm ERR! Incorrect or missing password.
npm ERR! If you were trying to login, change your password, create an
npm ERR! authentication token or enable two-factor authentication then
npm ERR! that means you likely typed your password in incorrectly.
npm ERR! Please try again, or recover your password at:
npm ERR! https://www.npmjs.com/forgot
npm ERR!
npm ERR! If you were doing some other operation then your saved credentials are
npm ERR! probably out of date. To correct this please try logging in again with:
npm ERR! npm login
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/my-user/.npm/_logs/2021-01-28T20_38_20_711Z-debug.log
Run Code Online (Sandbox Code Playgroud)
publishConfig
不幸的是,publishConfig
不能解决问题。它也没有解决两种.npmrc
语法产生不同结果的问题。
.npmrc
authToken
NPM 的文档说明不需要authToken
在项目中包含.npmrc
. 进行身份验证npm login
并将其存储authToken
在全局中~/.npmrc
就足够了。
--registry
命令行标志在解决影响此问题的 NPM 错误之前,我找到了一种解决方法。使用以下项目.npmrc
语法时:
@my-org:registry=https://npm.pkg.github.com/
Run Code Online (Sandbox Code Playgroud)
如果我运行npm publish --registry=https://npm.pkg.github.com/
,我可以成功发布。此外,我可以毫无问题地安装依赖项。
Jor*_*est 14
这已在 NPM7.5.3
及更高版本中修复。
这已被确认为 NPM 上的错误7.x
。该团队目前正在通过GitHub Pull Request #2602修复该错误。在此错误修复发布之前,最好的建议是执行下面列出的解决方法之一。
--registry
命令行标志运行时npm publish
,添加--registry
标志。该标志使开发人员能够指定他们想要发布到、覆盖.npmrc
或package.json
配置的注册表。对于我的问题中列出的示例,该项目.npmrc
应包含:
@my-org:registry=https://npm.pkg.github.com/
Run Code Online (Sandbox Code Playgroud)
通过运行以下命令启动发布将成功:
@my-org:registry=https://npm.pkg.github.com/
Run Code Online (Sandbox Code Playgroud)
根据npm 开发人员 wraithgar 对此 bug 的 GitHub 问题的评论,您可以使用默认 NPM 注册表的虚拟令牌来解决此问题。在我们的项目中.npmrc
,添加以下行:
//registry.npmjs.org/:_authToken=dummy
Run Code Online (Sandbox Code Playgroud)
完整的项目.npmrc
应包含:
//registry.npmjs.org/:_authToken=dummy
@my-org:registry=https://npm.pkg.github.com/
Run Code Online (Sandbox Code Playgroud)
在这个问题中,我们尝试使用的项目.npmrc
语法都没有指定注册表,因为 NPM 的文档表明我们不必这样做。文档指出,~/.npmrc
如果我们的项目中没有全局变量,它将检查我们的全局变量.npmrc
。NPM 中的错误导致 NPM.npmrc
在尝试进行身份验证之前检查项目是否已指定注册表。用幽灵加自己的话说:
发生的情况是,当前 cli 仅在查看您是否已登录时查找您配置的“注册表”设置。因此临时解决方案是覆盖该设置(就像您通过传递 --registry 所做的那样),或者添加默认 (npm) 注册表的令牌,以便令牌检查不会失败。检查只是在配置中查找令牌的存在,而不是验证它(当然,如果在实际请求期间使用它,就会发生这种情况),因此放入一个虚拟值将停止错误,直到 PR土地。
添加虚拟令牌后,运行npm publish
和npm install
应该都会成功。
Art*_* S. 10
我有同样的错误。我修复的第一件事是 npm 版本 > 7.5.3,如已接受的答案中所建议的,但没有运气,同样的错误:
npm ERR! code ENEEDAUTH
npm ERR! need auth This command requires you to be logged in.
npm ERR! need auth You need to authorize this machine using `npm adduser`
Run Code Online (Sandbox Code Playgroud)
在尝试了所有建议的解决方法后,它仍然给出相同的输出。最后我找到了原因:我忘记在package.json“name”属性中添加范围,所以通过更改解决了问题
{
"name": "my-package",
...
Run Code Online (Sandbox Code Playgroud)
到
{
"name": "@my-org/my-package",
...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2034 次 |
最近记录: |