我第一次“ 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有关,因为删除此依赖项后,所有功能都在第一次运行。
这是依赖关系图:
精简后的项目可以在以下位置找到 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上均发生。
答案 0 :(得分:0)
您绝对应该始终保留package-lock.json
。
以下是对该文件的很好描述,以及为什么如此有用:package-lock.json -- A manifestation of the manifest
要点是:
- 描述一个依赖关系树的单一表示,这样可以确保队友,部署和持续集成安装完全相同的依赖关系
和
- 通过允许npm跳过以前安装的软件包的重复元数据解析来优化安装过程
通过删除此文件,您将( kinda )混淆NPM。
保留package-lock.json
文件,然后处理如果不这样做将出现的所有问题会更容易:)
package-lock.json
“此文件旨在提交到源存储库中”