npm install覆盖现有的package-lock.json并中断Modal



我看到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.jsonpackage-lock.json,因为它尝试安装新版本的依赖项。如果您不希望这样,并且希望利用package-lock.json并保持packages.json不变,请尝试npm ci

最新更新