为什么我必须运行两次“ npm install”才能使我的软件包成功安装

时间:2018-12-19 14:34:27

标签: mysql npm npm-install

我第一次“ npm install” package_1时,出现以下错误。

npm ERR! path C:\Users\john_\Documents\GitHub\why_npm_nesting_fails\package_1\node_modules\.staging\bignumber.js-55edd243

我不使用“ bignumber”,所以假设它是一个mysql依赖项。我第二次“ npm install” package_1通过了。

added 2 packages and audited 30 packages in 0.722s

它与mysql有关,因为删除此依赖项后,所有功能都在第一次运行。

这是依赖关系图:

enter image description here

精简后的项目可以在以下位置找到 https://github.com/johngrabner/why_npm_nesting_fails 只有4个package.json文件,每个文件有7行,其中包括{}演示了此问题。即:4个文件,每个文件1行,证明了这个问题。

这个问题使我无法将项目干净地放入docker容器中,因为第一个“ npm安装”失败了。解决方法 安装“ package_4”,然后安装“ package_3”,依此类推,但是 我担心我不明白会回来咬我的东西。

以上问题在Windows和Docker Node:9.4上均发生。

1 个答案:

答案 0 :(得分:0)

您绝对应该始终保留package-lock.json

以下是对该文件的很好描述,以及为什么如此有用:package-lock.json -- A manifestation of the manifest

要点是:

  
      
  • 描述一个依赖关系树的单一表示,这样可以确保队友,部署和持续集成安装完全相同的依赖关系
  •   

  
      
  • 通过允许npm跳过以前安装的软件包的重复元数据解析来优化安装过程
  •   

通过删除此文件,您将( kinda )混淆NPM。

保留package-lock.json文件,然后处理如果不这样做将出现的所有问题会更容易:)


package-lock.json

  

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

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