我一直在尝试将我的包发布到 NPM 注册表。
我收到错误消息,提示我不允许将我的包推送到注册表。
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 帐户但未验证帐户上的电子邮件地址时,我收到了此 403 错误消息。我找到了来自 NPM 的验证请求电子邮件,单击了链接,然后神奇地能够发布我的第一个包。
发生这种情况的原因可能是软件包名称重复或您从未验证过您的电子邮件地址。
检查您是否发布相同的版本。我需要再次更新软件包的版本和
npm publish
。从我得到的禁止错误来看,它并不明显。
不要忘记您需要登录。
运行
npm login
能够发布包。
检查您的电子邮件注册并确认验证
最后重复发布你的包
我希望能起作用😁
当组织名称已被占用时也会发生这种情况。使用以下网址:
https://www.npmjs.com/org/ORG_NAME_HERE
如果您收到“404 Not Found”错误,则表示该名称是免费的。否则就不是了。
可能有很多原因
对我来说还有另一个同名的项目。我只需更改名称并 npmpublish 就可以了。
我刚刚验证了我的电子邮件,错误消失了。现在我可以发布我的包了。
此错误的另一个原因是您的包名称与现有已发布的包冲突。 NPM 认为这是您要发布的包,显然您没有权限
如果使用范围,需要满足以下条件:
如果您已经验证了您的 NPM 帐户,则包名称已被占用。在这种情况下,您可以使用范围包名称。例如,将
package.json
中的包名称从 'some-package' 更改为 '@awesome-packages/some-package'
NPM 默认情况下会尝试将作用域包设为私有(这是一项付费功能),因此以下是发布它的正确方法:
$ npm publish --access=public
对我来说这是重复的包名称。更改
package.json
中的包名称就可以了。可能还有其他两个原因:
尝试
npm whoami
。如果您没有显示用户名,请尝试 npm login
。
如果您尝试重新发布,请确保根据您的需要运行
npm version major/minor/patch
。
就我而言,我的
npm config
中的电子邮件与我设置的 npm 登录名不同。
所以基本上您通过
email
显示的 npm config ls -l
应与您的 npmjs.com 帐户中指定的电子邮件匹配。
如果您使用
NPM_TOKEN
发布,请确保它具有 publish
权限,而不是 read-only
您的包名称之前已被其他用户发布过
如果您是 Ubuntu 用户,即使电子邮件经过验证,也会出现这种问题。
在npm登录之前添加sudo cmd,
sudo npm login
发布模块时也使用 sudo
sudo npm publish