NodeJS 程序包未发布到npm(不在npm注册表中)

azpvetkf  于 2023-01-25  发布在  Node.js
关注(0)|答案(7)|浏览(153)

我想把我的git仓库发布到npm,这样我就可以在其他项目中使用它了,但是当我运行npm publish命令时,我得到了如下错误:

npm ERR! code E404
npm ERR! 404 Not Found - PUT https://npm.pkg.github.com/vue-toggle-component
npm ERR! 404
npm ERR! 404  'vue-toggle-component@0.1.0' 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! A complete log of this run can be found in:
npm ERR!     C:\Users\niels\AppData\Roaming\npm-cache\_logs\2020-10-29T10_47_26_952Z-debug.log

在尝试修复错误时,我尝试了npm adduser命令和npm login命令以确保我登录了。这两个命令都没有解决我的问题,因为看起来我已经登录了。
我的package.json

{
  "name": "vue-toggle-component",
  "version": "0.1.0",
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "core-js": "^3.6.5",
    "vue": "^2.6.11"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "~4.5.0",
    "@vue/cli-plugin-eslint": "~4.5.0",
    "@vue/cli-service": "~4.5.0",
    "babel-eslint": "^10.1.0",
    "eslint": "^6.7.2",
    "eslint-plugin-vue": "^6.2.2",
    "vue-template-compiler": "^2.6.11"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "node": true
    },
    "extends": [
      "plugin:vue/essential",
      "eslint:recommended"
    ],
    "parserOptions": {
      "parser": "babel-eslint"
    },
    "rules": {}
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not dead"
  ],
  "publishConfig": {
    "registry": "https://npm.pkg.github.com/"
  },
  "description": "## Project setup ``` yarn install ```",
  "main": "babel.config.js",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/nehlis/vue-toggle-component.git"
  },
  "keywords": [
    "Vue.js",
    "Toggle",
    "component",
    "Lightweight",
    "Checkbox"
  ],
  "author": "Niels Bosman",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/nehlis/vue-toggle-component/issues"
  },
  "homepage": "https://github.com/nehlis/vue-toggle-component#readme"
}

有人知道怎么修吗?

fcg9iug3

fcg9iug31#

尝试npm login。在npm publish的情况下,有时会显示误导性消息。

qgelzfjb

qgelzfjb2#

根据错误输出中出现的https://npm.pkg.github.com/,您试图发布到GitHub Packages而不是npm注册表(尽管GitHub现在拥有npm,但它们仍然是独立的)。
GitHub包只支持作用域npm包。作用域包的名称格式为@owner/name。作用域包总是以@符号开始。您可能需要更新package.json中的名称以使用作用域名称。例如,“name”:“@codertocat/你好-世界-npm”。
所以你需要修改你的配置,指向npm注册表而不是GitHub软件包注册表,或者修改你的package.json中的name字段,使之成为一个有作用域的软件包名。

vxqlmq5t

vxqlmq5t3#

我有同样的问题,问题来自于发布的包是不可访问的,所以你需要添加.npmrc与您的私人repo是这样的

registry=https://npm.pkg.github.com/yourcompany

@yourcompany:registry=https://npm.pkg.github.com
rsl1atfo

rsl1atfo4#

正如另一位用户提到的,你必须将自己添加到你公司或组织的私人注册表中,但是如果你没有.npmrc设置,这个命令会自动创建文件并更新你的注册表:

npm config set registry https://registry.your-company-registry.npme.io/

但是,最可靠的方法是简单地执行以下操作

npm login
lp0sw83n

lp0sw83n5#

关键在于身份验证。
似乎用户名/密码验证不再与npm publish一起工作。
您需要生成访问令牌x1c 0d1x
然后用它来发布

NPM_TOKEN=blahblahblahblaha npm publish
9ceoxa92

9ceoxa926#

在.npmrc文件中添加以下代码

always-auth = true
@your_company:registry=https://npm.artifactory.your_company.com/artifactory/api/npm/npm/
registry=https://npm.artifactory.your_company.com/artifactory/api/npm/npm/

在GIT bash中执行命令

npm config set registry https://registry.npmjs.org/
npm install
e1xvtsh3

e1xvtsh37#

我也遇到过同样的问题,并且使用了几乎所有我认为有效的解决方案。如果你在GitHub上发布它,那么这可能会对你有所帮助。比如

  • 更新npm到最新版本
  • 使用npm config set registry https://registry.your-company-registry.npme.io/设置注册表
  • 复位令牌

还是不行
如果您的GitHub用户名中包含大写字符,并且您使用的是GitHub在package部分下提供的命令
确保在本地运行该命令时更新您的用户名默认情况下,GitHub不会在packages部分下的命令中显示大写字符。
如果你的用户名是UserName123,包名是my-first-package,GitHub会显示的命令是
npm install @username123/my-first-package@1.0.0
请注意,安装软件包时用户名区分大小写,因此,请将命令更新为
npm install @Username123/my-first-package@1.0.0
希望它能正常工作

相关问题