未找到 - PUT https://npm.pkg.github.com/package-name

kax*_*993 20 javascript git github github-actions github-package-registry

我正在尝试在 GPR(Github 包注册表)上上传一个包。我登录成功:

npm login --registry=https://npm.pkg.github.com
Run Code Online (Sandbox Code Playgroud)

然后运行这些命令:

npm set registry https://npm.pkg.github.com/

npm publish
Run Code Online (Sandbox Code Playgroud)

返回此错误:

npm ERR! 404 Not Found - PUT https://npm.pkg.github.com/package-name
npm ERR! 404 
npm ERR! 404  'package-name@version' is not in the npm registry.
Run Code Online (Sandbox Code Playgroud)

似乎它试图在 npm 注册表而不是 github 包注册表上上传包。我应该如何解决这个问题?

kax*_*993 25

有两种方法可以解决这个问题:

  1. 在 中指定publishConfig选项package.json
"publishConfig": {
    "registry":"https://npm.pkg.github.com/@OWNER"
},
Run Code Online (Sandbox Code Playgroud)
  1. .npmrc使用以下内容将文件添加到您的项目:
registry=https://npm.pkg.github.com/@OWNER
Run Code Online (Sandbox Code Playgroud)

替换OWNER为拥有您将在其中发布包的存储库的 GitHub 上的用户或组织帐户的名称。

  • 它解决了问题,但我有新问题``405 Method Not allowed`` (4认同)
  • @yussan你是怎么知道“405 Method Not allowed”的 (3认同)

小智 18

例如:

{
  "name": "@elvisjs/calling-elvis",
  "repository": {
    "type": "git",
    "url": "https://github.com/elvisjs/calling-elvis"
  },
  "publishConfig": {
    "registry": "https://npm.pkg.github.com/elvisjs"
  }
}
Run Code Online (Sandbox Code Playgroud)

namerepository/url并且publishConfig/registry必须匹配。


Pra*_*jan 9

Github 包注册表期望 package.json 上的名称属性为“@{github username}/{package name},例如:-

"name": "@pravanjan/local-time",
"publishConfig": { 
     "registry": "https://npm.pkg.github.com/" 
 },
Run Code Online (Sandbox Code Playgroud)

如果 package.json 中没有设置“publishConfig”,我们可以直接在终端中设置注册表参数

npm publish --registry=https://npm.pkg.github.com/ 
Run Code Online (Sandbox Code Playgroud)

这对我有用