尝试将新包发布到 NPM 时出现 404

Posted

技术标签:

【中文标题】尝试将新包发布到 NPM 时出现 404【英文标题】:Getting 404 when attempting to publish new package to NPM 【发布时间】:2016-12-31 02:30:23 【问题描述】:

我刚刚创建了一个new package。

我现在第一次尝试像这样将它发布到 NPM:

    ole@MKI:~/Sandbox/pli$ npm publish  --access public
    npm ERR! publish Failed PUT 404
    npm ERR! Linux 3.13.0-93-generic
    npm ERR! argv "/home/ole/.nvm/versions/v6.4.0/bin/node" "/home/ole/.nvm/versions/v6.4.0/bin/npm" "publish" "--access" "public"
    npm ERR! node v6.4.0
    npm ERR! npm  v3.10.3
    npm ERR! code E404

    npm ERR! 404 Not found : @supericium/pli
    npm ERR! 404 
    npm ERR! 404  '@supericium/pli' is not in the npm registry.
    npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
    npm ERR! 404 
    npm ERR! 404 Note that you can also install from a
    npm ERR! 404 tarball, folder, http url, or git url.

    npm ERR! Please include the following file with any support request:
    npm ERR!     /home/ole/Sandbox/pli/npm-debug.log

我尝试更新 NodeJS 和 NPM 以确保我拥有最新版本,它们是:

ole@MKI:~/Sandbox/pli$ node --version
v6.4.0
ole@MKI:~/Sandbox/pli$ npm --version
3.10.3

想法?

【问题讨论】:

是的,这没有任何意义。无法创建包,因为它不存在。这些答案都不能解决问题。 @Distortum 尝试在详细模式下运行publish - 以一种非常令人沮丧的方式,在正常模式下,许多问题以 404 告终,而真正的原因可能是由于各种问题而导致的 403。通常运行详细模式会使问题变得明显。 【参考方案1】:

您需要在注册表中注册“supericium”(npm adduser)作为用户名并登录(npm login)才能在该范围内发布。

https://docs.npmjs.com/getting-started/publishing-npm-packages https://docs.npmjs.com/getting-started/scoped-packages

【讨论】:

【参考方案2】:

在我的情况下由npm login 解决,错误信息具有误导性

【讨论】:

它工作...但是当我将我的包发布到 npm 他们的网站停止工作并显示我error loading page :))) 旁注:问题不在于客户端,而在于 npm 注册表发送 404。使用 verdaccio 作为代理,如果登录信息不正确,它会发送 401。这使客户端显示预期的“您需要登录”消息。 它不起作用。 成功了,谢谢【参考方案3】:

遇到了同样的错误,我的问题是包以某种方式设置为仅“读取”访问权限。所以我必须去 NPM 并将包更新为“读/写”访问权限:

1.

2.

【讨论】:

解决了我的问题! 在我发现这个之前花了很多时间试图修复它。谢谢;)【参考方案4】:

当您将密码更改为 NPM 但未通过 CLI 注销/登录时,您也可能会收到此错误。使用npm logout 然后npm login 为我工作。

【讨论】:

呃...这是给我的。没有什么告诉你你没有登录。【参考方案5】:

就我而言,我必须验证电子邮件地址。即使npm whoami 告诉我我登录正常。

【讨论】:

您是如何验证电子邮件地址的?通过执行npm config ls 或其他方式?【参考方案6】:

我刚刚使用npm adduser 命令登录到 npm,它运行良好。

【讨论】:

哇!这就是我的答案。尽管通过命令行进行了身份验证,但我不得不重新添加我的用户并重试发布。那个 CLI 体验真的很糟糕。【参考方案7】:

就我而言,我收到此消息是因为我使用的令牌已被撤销。我通过以下方式修复了它:

    在我的 npm 帐户中生成新的访问令牌。 修改行:export NPM_TOKEN="<token>" 在我的 .zshrc(或 .bashrc)文件中 在终端输入source ~/.zshrc

【讨论】:

【参考方案8】:

就我而言,我注意到我在 npm 网站中的 npm 帐户用户名 与我的 npm 普通用户名不同。当我尝试通过使用普通用户名登录在控制台中发布时给了我这个错误。

发布失败的 PUT 404 npm 错误!代码 E404 npm 错误! 404 找不到用户

但是用账号名登录控制台后就发布成功了

【讨论】:

【参考方案9】:

成功发布包后,您尝试npm install时可能会遇到:

npm ERR! code E404
npm ERR! 404 Not Found: @xxx/yyy@latest

或类似的东西,不管你npm publish 是否成功。在这种情况下,请确保您在 packages.json 中的 main: 'file.js' 存在。

理想情况下,如果您想直接从包装中获取信息,可以将其命名为 index.js,这样您就不会得到像 import * from '@xxx/yyy/file' 这样的东西。

【讨论】:

【参考方案10】:

就我而言,我在尝试发布的新包的package.json 中缺少repository 字段。

"repository": "git://github.com/your-org/your-repo-name.git"

https://docs.npmjs.com/files/package.json#repository

【讨论】:

【参考方案11】:

没有什么对我有用,除了重新登录:

npm login

希望这对我或将来的其他人有所帮助!

【讨论】:

【参考方案12】:

我遇到了同样的问题,但我通过卸载 LTS 版本,然后安装 Current 版本和 yarn 成功解决了这个问题。

【讨论】:

【参考方案13】:

在我的情况下,我不小心输入了 https://registry.npmjs.org 而不是 https://registry.npmjs.com(.org 与 .com)

【讨论】:

文档中的默认值将 .org 列为正确的 URL - docs.npmjs.com/cli/v7/using-npm/config#registry【参考方案14】:

只需将我的两分钱添加到可能的解决方案中

我在 CI 工作流程中遇到此错误,因此没有交互式登录或相关内容。 现有的包工作正常,但添加一个新的包不能正常工作,我得到一个 404。我意识到它应该与新包本身相关,而不是 CI 环境,确实如此。

新包的package.json 缺少两个字段,repositorypublishConfig 字段。

添加这两个字段,它可以正常工作(注意repository 字段以其扩展形式使用,带有directory 属性)

"repository": 
  "type": "git",
  "url": "ssh://git@github.com/__user__/__repo-name__.git",
  "directory": "packages/__new-package-name__"
,
"publishConfig": 
  "registry": "https://npm.pkg.github.com/"

【讨论】:

【参考方案15】:

就我而言,我相信我在 npmjs.com 上启用了 2FA,因此 CD 中使用的发布令牌不起作用(应该抛出 401,但得到了 404)。

npmjs.com 上生成一个新的automation 令牌并更新我的CD 上的秘密(GitHub 操作)解决了这个问题。

【讨论】:

以上是关于尝试将新包发布到 NPM 时出现 404的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在尝试将大文件发布到核心 Web API 时出现 404

尝试将新对象添加到列表时出现 404 错误 MVC

尝试将生成的 pdf 文件上传到 Azure Blob 存储时出现 404 错误

将表单提交到 servlet 时出现 404 错误 [重复]

尝试输入反应应用程序路由时出现 404

部署到 heroku 时出现错误“无法加载资源 404”bundle.js