11

我们的团队刚刚更新到 npm@5。Windows 和 Mac 之间是统一的package-lock.json(某些依赖项是可选的,因此它们不会安装在 Windows 上,但它们会安装在 Mac 上),因此无论机器如何,我们都会生成相同的 node_modules 结构。一切顺利,然后每个团队成员都经历了以下步骤:

  1. rm -rf node_modules
  2. git pull
  3. npm install

这实际上对所有团队成员来说都是完美的,除了一个package-lock.jsonnpm install. 一个修改的行是它删除了"requires": true.

于是我看到了:

{
  ...
  "version": "0.0.1",
  "lockfileVersion": 1,
  "requires": true,
  "dependencies": {
  ...
}

但他看到了:

{
  ...
  "version": "0.0.1",
  "lockfileVersion": 1,
  "dependencies": {
  ...
}

有谁知道为什么requires: true可能会从package-lock.json某些机器上的文件中删除而不是其他机器上的文件?此外,稍微解释一下这个属性的作用也不会受到伤害。:)

提前致谢!

4

1 回答 1

6

正如我在评论中所怀疑的那样,该requires字段已从5.1.0. 您可以在此处查看相关的拉取请求https://github.com/npm/npm/pull/17508(此处可见更改日志https://github.com/npm/npm/releases/tag/v5.1.0

引用它所说的话:

这有一些修复:

  1. 它引入了一个新的 package-lock.json 字段,称为 requires,它跟踪给定模块需要哪些模块。
  2. ......

为避免此类冲突,我建议您(以及我自己)确保您的所有队友都使用相同的npm版本。

更新

升级npm到 version后5.1.0,我遇到了缺少依赖项的问题(在 Angular 4 应用程序上工作)。如果有人遇到同样的问题,这是我为解决它所做的:

rm -rf node_modules
npm prune
npm install

希望能帮助到你。

于 2017-07-19T03:48:10.937 回答