我的 package.json 中有一个“许可证”,为什么 npm/yarn 说它丢失了?

问题描述 投票:0回答:10

运行时

yarn install
每次我都会看到一条警告,提示没有提交许可证,即使我已经定义了许可证:

$ jq . package.json 
{
  "name": "license-example",
  "version": "1.0.0",
  "main": "index.js",
  "license": "UNLICENSED",
  "dependencies": {
    "lodash": "^4.17.4",
    "moment": "^2.18.1"
  }
}

根据 npm 定义 应该是有效的:

最后,如果您不想授予他人使用私人空间的权利 或根据任何条款未发布的包:

{ "license": "UNLICENSED" }

这是输出:

yarn install
yarn install v0.27.5
warning ../package.json: No license field
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.09s.

我的主要目标是让该警告消失,但我也不想提供无效的开源许可证来使警告消失,即使它是一个永远不会在外部看到的内部项目。

如何将纱线项目标记为专有而不出现警告?

javascript node.js package.json yarnpkg
10个回答
237
投票

对于

yarn
npm
,默认行为是它们查找父目录。

我的主文件夹中有一个过时且被遗忘的

package.json
,没有许可证字段:

~/package.json

在我的项目中运行

yarn install
时:

~/my-project/package.json

yarn
然后也在我的主目录中找到了那个并报告了该错误。我误以为这是我项目的
package.json

警告通过在路径前面加上

..
作为父文件夹来明确这一点。

warning ../package.json: No license field

删除过时的

package.json
后,我得到了预期的输出:

yarn install v0.27.5
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.88s.

55
投票

仔细看看消息:

警告../package.json:没有许可证字段

它指的是上一级目录的package.json。
通过输入许可证字段或 private: true 来修复该问题,或者将其删除,因为它可能无论如何都不应该存在;-)


30
投票

我收到以下警告以及其他一些许可警告。

warning package.json: No license field
warning [email protected]: No license field

我所做的就是将

package.json
文件的
private
属性更新为
true

{
  "name": "some-application-name",
  "author": "Keet Sugathadasa",
  "email": "email",
  "license": "MIT",
  "version": "0.0.1",
  "private": true,
  ...
}

有了这个,当我做

No license field
时,我不再收到任何
yarn install
警告。要了解原因,请参阅此问题

{"private": true}
表示 npm 将拒绝发布它,以防止意外发布私有存储库。

有关此内容的更多信息,请参阅以下链接。 https://docs.npmjs.com/files/package.json#private https://flaviocopes.com/package-json/#private


18
投票

尝试多种解决方案后,发现根目录下有以下文件,需要删除:

cd ~
~$ rm -rf package.json
~$ rm -rf yarn.lock
~$ rm -rf package-lock.json

10
投票

我是反应新手,但我发现,最简单的方法是:只需将

"private": true
添加到您的
package.json
文件中。就是这样。


8
投票

我陷入了同样的错误,我发现当我们添加

package.json
yarn
时,某些文件可以位于系统根目录中。因此,错误来自系统根。您只需删除这些文件即可,错误将不再存在。

  1. 只要cd ~,就可以找到package.json和yarn.lock。
  2. rm -rf package.json 或 rm -rf yarn.lock

0
投票

如果错误仍然存在,只需检查您的系统根目录 C:\Users\User 您将看到 package.json 和yarn.lock 文件,删除它们,警告就会消失。这些是干扰您的项目的文件


0
投票

纱线断了,需要修复。 UNLICENSED 是许可证字段的有效指示符,但纱线无法识别它,因为开发人员没有保持最新状态。

请注意,这个答案是在问题提出 6 年后做出的。但他们并没有优先考虑这个更新。

刚刚使用包含以下内容的 package.json 对此进行了测试: 私人:真实, 许可证:“未经许可”

纱线版本 1.22.19

并且警告仍然出现。最好的办法就是忽略警告,这只是一个麻烦。 - 更新 - 请注意,有人建议添加 --ignore-scripts 可以关闭此警告,但它不仅仅关闭此警告,它还会产生其他后果。

例如,如果不将 UNLICENCED 视为与 ISC 同等有效的条目,则此警告可能会鼓励企业环境中的一些非常有害的工程实践,例如为正在开发为专有工作的代码选择默认开源许可证雇主。这可能会对雇主保留其花费大量资金开发的知识产权所有权的能力构成严重风险。


-2
投票

只需确保您位于包含 package.json 文件的目录中,然后只需安装 yarnnpm,然后根据需要 serve 即可。

我目前正在运行一个没有许可证字段的项目,它运行得很好, 我认为这不会返回错误。

此外,请参阅有关运行包所需的必填字段的更多信息,以及有关使用 yarn/npm 的 package.json 文件的其他提示:

https://classic.yarnpkg.com/en/docs/package-json/

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

-3
投票

我也遇到了类似的问题,我刚刚升级了 Node 的版本,一切正常......

© www.soinside.com 2019 - 2024. All rights reserved.