NPM 发布注册表 - 403 禁止访问 - "You don't have permission to publish "...”

NPM Publish Registry - 403 Forbidden - "You don't have permission to publish "..."

我一直在尝试将我的包发布到 NPM Registry。
我收到一条错误消息,提示我不允许将我的包推送到注册表。

403 Forbidden - PUT https://registry.npmjs.org/qdb - You do not have permission to publish "qdb". Are you logged in as the correct user?

不知道为什么。

其他人似乎已经发布了具有该名称的包,因此您需要在 package.json 文件中使用不同的名称,然后再次 npm publish

否则,您可以查看您尝试发布的版本是否与已发布的版本相同。

检查您发布的版本是否相同。我需要再次更新包的版本和 npm publish。从我得到的禁止错误来看,它并不明显。

像这样更改名称(以及版本) sample

  "name": "npm-helloworld-testwwwyy-xx",
  "version": "1.0.3"

对我来说,我刚创建我的 NPM 帐户时收到了这个 403 错误消息,但没有验证我帐户上的电子邮件地址。我找到了来自 NPM 的验证请求电子邮件,单击 link,神奇地发布了我的第一个包。

发生这种情况的原因可能是包裹名称重复或您从未验证过您的电子邮件地址。

当组织名称已被占用时也会发生。使用以下 URL:

https://www.npmjs.com/org/ORG_NAME_HERE

如果您收到“404 未找到”错误,则表示该名称是免费的。否则不是。

可能有很多原因

  1. 电子邮件未验证,因此请先使用 npmjs.com
  2. 验证您的电子邮件
  3. 其他人正在使用相同的包名称,它需要是唯一的。所以 选择一个唯一的名称。 您可以在 package.json 文件下更改名称。
  4. 如果您要重新发布包含更改的相同包,则需要更改版本,例如 - 1.0.0 到 1.0.1。您也可以在 package.json 文件下更改版本名称。

检查您的电子邮件注册并确认验证
最后重复发布你的包
我希望能奏效

我刚刚验证了我的电子邮件,错误消失了。现在我可以发布我的包了。

别忘了您需要登录。

运行 npm login 能够发布包。

对我来说,这是重复的包名。在 package.json 中更改包名称就可以了。可能还有其他两个原因:

  1. 尝试 npm whoami。如果您没有显示用户名,请尝试 npm login.

  2. 如果您尝试重新发布,请确保 运行 npm version major/minor/patch 根据您的需要。

如果您是 Ubuntu 用户,即使电子邮件已验证,也会发生这种问题。

在npm登录前添加sudo cmd,

sudo npm login

在发布模块时也使用 sudo

sudo npm publish

就我而言,我 npm config 中的电子邮件与我的 npm 登录设置的不同。

所以基本上,通过 npm config ls -l 显示的 email 应该与您的 npmjs.com 帐户中指定的电子邮件相匹配。

如果您使用 NPM_TOKEN 发布,请确保它具有 publish 权限,而不是 read-only

对我来说,还有另一个同名项目。我只是更改名称并 npm publish 然后它工作正常。