我看到package-lock.json
有一种奇怪的行为。一旦我删除node_modules和package-lock.json
并构建它们,我的应用程序就会按预期工作。当我在刚刚构建的package-lock.json
存在的情况下再次执行npm install
时,文件会发生完全更改,从树中删除了许多包。当我现在运行服务器时,某些Modal
(来自react-bootstrap
(组件无法正常工作。我不明白为什么这个文件应该更改并最终安装不同版本的依赖项,这会破坏代码。我在package-lock.json
方面做错了什么吗?
每次我删除node_modules和这个文件并进行构建时,我都不会遇到任何问题。只有当这个文件已经存在并且我执行npm install
时,我才会遇到问题。
npm install
在更新node_modules
时(即安装新模块/包时(创建一个新的package-lock.json
。因此,对预先存在的package-lock.json
的覆盖是预期行为。
至于Modal
的中断,很可能是因为版本冲突。如果您发布"break"错误,我们可以更好地确定是什么导致了它,但当您的包需要另一个依赖项的特定版本时,通常会发生这种情况。
一个可能的解决方案是删除node_modules
和原始package-lock.json
文件,然后运行install。您也可以尝试npm ci
。
编辑
此链接可能有助于您深入了解package-lock.json
文件以及它们如何受到npm install
的影响。从本质上讲,一旦生成了锁定文件,它就可以避免更新到较新的版本,直到您编辑package.json
以指定不同的版本或范围。无论您要安装什么,都应该从命令行执行。
npm install
更改packages.json
和package-lock.json
,因为它尝试安装新版本的依赖项。如果您不希望这样,并且希望利用package-lock.json
并保持packages.json
不变,请尝试npm ci
。