“我为什么要跑?”;npm安装“;两次,我的软件包才能成功安装

“我为什么要跑?”;npm安装“;两次,我的软件包才能成功安装,npm,npm-install,Npm,Npm Install,第一次安装“npm安装”包_1时,出现以下错误 npm ERR! path C:\Users\john_\Documents\GitHub\why_npm_nesting_fails\package_1\node_modules\.staging\bignumber.js-55edd243 我不使用“bignumber”,所以假设它是MySQL依赖项。第二次我“npm安装”包_1时,它通过了 added 2 packages and audited 30 packages in 0.722s

第一次安装“npm安装”包_1时,出现以下错误

npm ERR! path C:\Users\john_\Documents\GitHub\why_npm_nesting_fails\package_1\node_modules\.staging\bignumber.js-55edd243
我不使用“bignumber”,所以假设它是MySQL依赖项。第二次我“npm安装”包_1时,它通过了

added 2 packages and audited 30 packages in 0.722s
它与MySQL有关,因为在删除此依赖项后,所有内容都第一次工作

以下是依赖关系图:

可在以下网址找到精简的项目: 只有4个package.json文件(每个文件有7行,包括{})说明了这个问题。ie:4个文件,每行1行,演示此问题

由于第一次“npm安装”失败,这个问题使我无法将我的项目干净地放入docker容器中。解决方法 安装“package_4”,然后安装“package_3”等等,都可以,但是 我担心我不明白什么东西会回来咬我


上述问题在Windows和Docker Node:9.4上都会出现。

您肯定应该始终保持您的
包锁定。json

以下是该文件的详细说明,以及该文件如此有用的原因:

要点是:

  • 描述依赖关系树的单一表示形式,以确保团队成员、部署和持续集成能够安装完全相同的依赖关系

  • 通过允许npm跳过以前安装的包的重复元数据解析,优化安装过程
删除此文件会(有点)混淆NPM

保存
package lock.json
文件更容易,如果不这样做,则可以处理所有出现的问题:)


包锁.json

“此文件旨在提交到源存储库中”


()

npm-v=6.5.0。节点-v=8.9.4。在windows pc上。docker中使用“FROM node:9.4”时出现了相同的错误。非常奇怪的观察结果:如果我保留了前一个双“npm install”中的package-lock.json,那么“npm install”第一次起作用。此外,如果保留package-lock.json,则在package-1文件夹中只创建一个“node\u modules”,而在创建的4个node\u modules中,每个package\n中只创建一个。MySQL的哪个版本?如果保留您的
package-lock.json
解决了这个问题,您是否考虑过提交您的
package.json
?当
package lock.json
存在时,
npm install
应该在查看您的
package.json
之前引用它
package lock.json
描述了当
npm安装
从头开始时发生的最终元数据解析。Myswl版本2.15.0只有顶级项目应该提交锁文件,而不是包。无论如何,真正的谜团是什么导致了失败,而不是如何逃避。如果不了解潜在的失败原因,它很可能会在未来暴露出它的头。