npm 错误!该包已被标记为私有

Pet*_*tar 7 node.js npm

我尝试在 npm 上发布我的 Angular 库。

但我收到错误

npm ERR! This package has been marked as private. Remove the 'private' field from the package.json to publish it.

但我的 package.json 文件中没有任何私有字段

我的库的 package.json 文件如下所示:

{
  "name": "@myfirst_mylastname/testlib123",
  "version": "0.0.1",
  "peerDependencies": {
    "@angular/common": "^11.1.2",
    "@angular/core": "^11.1.2"
  },
  "dependencies": {
    "tslib": "^2.0.0"
  },
  "description": "Test library",
  "author": {"name":"test name"},
  "keywords": ["test library"],
}
Run Code Online (Sandbox Code Playgroud)

我尝试了什么

我认为 private 总是默认的,我在我的 package.json 文件中添加了 "private":"false" 但我在 npmpublish 上得到了同样的错误。

googled和我在他们所说的地方找到了答案 - 在 package.json 文件中使私有字段为 true 或 false。我尝试过但没有成功

这是为什么 ?怎样才能解决呢?

小智 4

如果这对其他人来说是一个问题,那么 NPM 在发布作用域包时抛出的错误会产生误导。

文件中可能没有“私有”字段,但是作用域包的访问属性默认package.json设置为,而普通包默认设置为(https://docs.npmjs.com/cli/v8/commands/npm-publish #使用权)。restrictedpublic

为了能够发布作用域包,请首先确保您的终端位于包的根目录中 - 发布命令仅影响您所在的目录。然后在发布时使用标志来设置其访问属性:

npm publish --access=public
Run Code Online (Sandbox Code Playgroud)

您还应该能够使用以下命令设置包的默认访问值

npm access public @myfirst_mylastname/testlib123
Run Code Online (Sandbox Code Playgroud)

这将允许您在不指定标志的情况下发布。(https://docs.npmjs.com/cli/v8/commands/npm-access#details