npm install会覆盖现有的package-lock.json并破坏Modal

时间:2019-11-08 15:49:45

标签: reactjs npm npm-install

我看到package-lock.json的行为很奇怪。一旦删除了node_modules和package-lock.json并对其进行构建,我的应用程序将按预期工作。当我使用刚刚建立的npm install再次执行package-lock.json时,文件将完全更改,从而从树中删除了很多软件包。现在,我运行服务器时,某些Modal(来自react-bootstrap)组件无法正常工作。我不明白为什么要更改此文件并最终安装不同版本的依赖项,从而破坏了代码。关于package-lock.json,我做错什么了吗?

每次我都删除两个node_modules和这个文件并进行构建时,我不会遇到任何问题。仅当该文件已经存在并且我执行npm install时,我才会遇到问题。

2 个答案:

答案 0 :(得分:0)

npm install每当您更新package-lock.json时(即安装新的模块/软件包时)都会创建一个新的node_modules。因此,覆盖先前存在的package-lock.json是预期行为。

至于Modal的中断可能是由于版本冲突。如果您发布“ break”错误,我们可以更好地确定是什么原因造成的,但通常在您的软件包需要特定版本的另一个依赖项时才会发生。

可能的解决方案是删除node_modules和原始package-lock.json文件,然后运行install。您也可以尝试npm ci

编辑

This link可能有助于您更深入地了解package-lock.json文件及其受npm install的影响。本质上,一旦生成了锁定文件,它就避免了更新到较新的版本-除非您编辑package.json以指定其他版本或范围。无论您要安装什么,都应该从命令行执行。

答案 1 :(得分:0)

npm install更改了packages.jsonpackage-lock.json,因为它试图安装较新版本的依赖项。 如果您不希望这样做并且希望利用package-lock.json并保持packages.json不变,请尝试npm ci