如何调试 'npm ERR! 403 In most cases, you or one of your dependencies are requesting a package version that is forbidden by your security policy.'
How to debug 'npm ERR! 403 In most cases, you or one of your dependencies are requesting a package version that is forbidden by your security policy.'
我目前正在尝试设置 Jenkins 和私有 npm 存储库 (Sonatype Nexus)。
当我尝试在 Jenkins 构建管道中发布到存储库时出现以下错误。
+ npm publish --registry https://<my-private-registry>/repository/npm-private/
npm notice
npm notice package: ts-acoustics@0.0.0
npm notice === Tarball Contents ===
npm notice 2.4kB Jenkinsfile
...
('notice' level info about the files)
...
npm notice === Tarball Details ===
npm notice name: ts-acoustics
npm notice version: 0.0.0
npm notice package size: 13.8 kB
npm notice unpacked size: 47.5 kB
npm notice shasum: 554b6d2b41321d78e00f6a309bb61c9181a2e3d6
npm notice integrity: sha512-QtExdu6IqZ+lH[...]r+HXolo4YCFPg==
npm notice total files: 17
npm notice
npm ERR! code E403
npm ERR! 403 403 Forbidden - PUT https://<my-private-registry>/repository/npm-private/ts-acoustics
npm ERR! 403 In most cases, you or one of your dependencies are requesting
npm ERR! 403 a package version that is forbidden by your security policy.
我在 Nexus 日志中找不到关于为什么禁止它的更多信息,this open GitHub bug 告诉我在大多数情况下上述错误文本指向错误的方向?!
知道如何继续进行发布工作吗?!
更新 1:我刚刚看到我在尝试手动发布时遇到了同样的问题!因此出于简单原因,Jenkins 不在等式中。
更新 2: 我可以做到 npm adduser --registry...
并且 npm 告诉我
Logged in as <my-user> on https://<my-private-registry>/repository/npm-private/.
当我执行 npm whoami --registry...
时,它会显示正确的用户名。
当我在项目中做npm publish --registry...
时,显示403错误
如何调试:
正如您从所有答案中看到的那样,有很多事情会导致相同的失败消息。以下是找到根本原因的方法:
在 Nexus 存储库管理器中 -> 菜单项“日志记录”
在那里,您可以简单地更改 Nexus 在运行时包含的每个 java 包的日志级别。
将包括“security”或“rest”在内的包的所有 LogLevel 更改为 TRACE 并再次触发您的请求。
在 LogViewer(也是 Nexus 的一部分)中,您现在有望看到所有必要的信息以了解问题。
在我的例子中,我必须将 nx-repository-view-*-*-edit
权限添加到我为 Jenkins 用来登录 Nexus 的用户创建的角色。我以为nx-repository-view-*-*-add
就可以发表了
希望对您有所帮助!
我有完全相同的 NPM ERR! 403 问题,最后通过断开所有 VPN 来解决。
如果您像我一样遵循 Node Cookbook 示例,或者您刚刚创建帐户的其他示例,那么您的错误可能与我的一样。
我没有验证我的电子邮件地址并得到了同样的错误(这是一个新帐户)。一旦我验证,它就可以工作(甚至在 VPN 上)。
检查您的电子邮件并验证您的帐户。
我在发布到 JFrog Artifactory 时遇到了同样的错误。这是因为存储库中已经有一个同名的包。为了解决这个问题,要么删除旧包,要么更改新包的 version/name。
我有同样的错误,这似乎涵盖了这些问题。
我通过重命名 package.json 中的包名称解决了这个问题。
如果您已经发布了一个版本,请确保每次发布时也更新版本。
错误可能是由于 public 的包冲突造成的。只需更改 package.json 中的包名称,然后重试!
这主要出现在两个场景
错误可能是由于 * 包冲突 即 public。只需 更改 package.json
中的包名称,然后重试!
您可能最近注册了并且忘记验证电子邮件。所以,你可以登录这个link:https://www.npmjs.com/login
在 header 上,您会看到一个选项,可以将验证 link 发送到您的电子邮箱。
验证完成后,再次尝试发布。
备注:2) 对我有用。
当我错误地尝试使用只读访问令牌发布包时遇到了这个问题。我在设置 -> 帐户 -> 访问令牌中为自己创建了一个新的访问令牌并解决了这个问题。
我也遇到了这个错误。我更改了 package.json 文件的包名称,并修复了错误。
{ "name": "digi-clock", "version": "1.0.0",}
更改此“名称”的值
在我的例子中,罪魁祸首是 AWS WAF 规则 EC2MetaDataSSRF_BODY
。
虽然我不明白它是如何关联的,但更新到最新版本 git 解决了我组织中所有遇到此问题的人 ♂️
在发布时更新 PACKAGE-VERSION,为我解决了这个问题。
对我来说,将 npm 从 v6 更新到 v8 解决了这个问题。旧的 package-lock 布局对每个包都有一个完整的注册表路径,其中一些路径不是 up-to-date。
对我来说,它有助于在命令行中登录 NPM,然后进行发布。
npm login
npm publish
并确保发布新版本。
我目前正在尝试设置 Jenkins 和私有 npm 存储库 (Sonatype Nexus)。 当我尝试在 Jenkins 构建管道中发布到存储库时出现以下错误。
+ npm publish --registry https://<my-private-registry>/repository/npm-private/
npm notice
npm notice package: ts-acoustics@0.0.0
npm notice === Tarball Contents ===
npm notice 2.4kB Jenkinsfile
...
('notice' level info about the files)
...
npm notice === Tarball Details ===
npm notice name: ts-acoustics
npm notice version: 0.0.0
npm notice package size: 13.8 kB
npm notice unpacked size: 47.5 kB
npm notice shasum: 554b6d2b41321d78e00f6a309bb61c9181a2e3d6
npm notice integrity: sha512-QtExdu6IqZ+lH[...]r+HXolo4YCFPg==
npm notice total files: 17
npm notice
npm ERR! code E403
npm ERR! 403 403 Forbidden - PUT https://<my-private-registry>/repository/npm-private/ts-acoustics
npm ERR! 403 In most cases, you or one of your dependencies are requesting
npm ERR! 403 a package version that is forbidden by your security policy.
我在 Nexus 日志中找不到关于为什么禁止它的更多信息,this open GitHub bug 告诉我在大多数情况下上述错误文本指向错误的方向?!
知道如何继续进行发布工作吗?!
更新 1:我刚刚看到我在尝试手动发布时遇到了同样的问题!因此出于简单原因,Jenkins 不在等式中。
更新 2: 我可以做到 npm adduser --registry...
并且 npm 告诉我
Logged in as <my-user> on https://<my-private-registry>/repository/npm-private/.
当我执行 npm whoami --registry...
时,它会显示正确的用户名。
当我在项目中做npm publish --registry...
时,显示403错误
如何调试:
正如您从所有答案中看到的那样,有很多事情会导致相同的失败消息。以下是找到根本原因的方法:
在 Nexus 存储库管理器中 -> 菜单项“日志记录”
在那里,您可以简单地更改 Nexus 在运行时包含的每个 java 包的日志级别。
将包括“security”或“rest”在内的包的所有 LogLevel 更改为 TRACE 并再次触发您的请求。
在 LogViewer(也是 Nexus 的一部分)中,您现在有望看到所有必要的信息以了解问题。
在我的例子中,我必须将 nx-repository-view-*-*-edit
权限添加到我为 Jenkins 用来登录 Nexus 的用户创建的角色。我以为nx-repository-view-*-*-add
就可以发表了
希望对您有所帮助!
我有完全相同的 NPM ERR! 403 问题,最后通过断开所有 VPN 来解决。
如果您像我一样遵循 Node Cookbook 示例,或者您刚刚创建帐户的其他示例,那么您的错误可能与我的一样。
我没有验证我的电子邮件地址并得到了同样的错误(这是一个新帐户)。一旦我验证,它就可以工作(甚至在 VPN 上)。
检查您的电子邮件并验证您的帐户。
我在发布到 JFrog Artifactory 时遇到了同样的错误。这是因为存储库中已经有一个同名的包。为了解决这个问题,要么删除旧包,要么更改新包的 version/name。
我有同样的错误,这似乎涵盖了这些问题。 我通过重命名 package.json 中的包名称解决了这个问题。 如果您已经发布了一个版本,请确保每次发布时也更新版本。
错误可能是由于 public 的包冲突造成的。只需更改 package.json 中的包名称,然后重试!
这主要出现在两个场景
错误可能是由于 * 包冲突 即 public。只需 更改
package.json
中的包名称,然后重试!您可能最近注册了并且忘记验证电子邮件。所以,你可以登录这个link:https://www.npmjs.com/login
在 header 上,您会看到一个选项,可以将验证 link 发送到您的电子邮箱。 验证完成后,再次尝试发布。
备注:2) 对我有用。
当我错误地尝试使用只读访问令牌发布包时遇到了这个问题。我在设置 -> 帐户 -> 访问令牌中为自己创建了一个新的访问令牌并解决了这个问题。
我也遇到了这个错误。我更改了 package.json 文件的包名称,并修复了错误。
{ "name": "digi-clock", "version": "1.0.0",}
更改此“名称”的值
在我的例子中,罪魁祸首是 AWS WAF 规则 EC2MetaDataSSRF_BODY
。
虽然我不明白它是如何关联的,但更新到最新版本 git 解决了我组织中所有遇到此问题的人 ♂️
在发布时更新 PACKAGE-VERSION,为我解决了这个问题。
对我来说,将 npm 从 v6 更新到 v8 解决了这个问题。旧的 package-lock 布局对每个包都有一个完整的注册表路径,其中一些路径不是 up-to-date。
对我来说,它有助于在命令行中登录 NPM,然后进行发布。
npm login
npm publish
并确保发布新版本。