我看到package-lock.json
的行为很奇怪。一旦删除了node_modules和package-lock.json
并对其进行构建,我的应用程序将按预期工作。当我使用刚刚建立的npm install
再次执行package-lock.json
时,文件将完全更改,从而从树中删除了很多软件包。现在,我运行服务器时,某些Modal
(来自react-bootstrap
)组件无法正常工作。我不明白为什么要更改此文件并最终安装不同版本的依赖项,从而破坏了代码。关于package-lock.json
,我做错什么了吗?
每次我都删除两个node_modules和这个文件并进行构建时,我不会遇到任何问题。仅当该文件已经存在并且我执行npm install
时,我才会遇到问题。
答案 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.json
和package-lock.json
,因为它试图安装较新版本的依赖项。
如果您不希望这样做并且希望利用package-lock.json
并保持packages.json
不变,请尝试npm ci
。