【问题标题】:my installed packages got lost in node_modules我安装的包在 node_modules 中丢失了
【发布时间】:2020-02-08 05:16:37
【问题描述】:

在我的项目中,我使用 gitnode_modules 文件夹显然被忽略了。我正在工作branch1 并添加了一些依赖项(例如redux)并通过npm install 安装它们。然后我切换到branch2,它与branch1同时创建,现在它与branch1有一些不同的依赖关系。我再次使用npm install 来安装这些软件包。

这就是发生的事情:当我回到branch1 时,我在branch1 工作期间已经安装的软件包都没有找到。我预计因为 node_modules 被忽略,两个分支包都存在。尽管我之前安装了它们,但我不得不再次运行 npm install。

所以我的问题是什么导致了这个?是 git 做某事吗?还是 npm 做某事?

【问题讨论】:

    标签: javascript reactjs react-native npm


    【解决方案1】:

    这是一个可能有助于解释的假设场景:

    1. 在分支 1 上安装“A”。它会保存到 node_modules,然后您将更改提交到 package.jsonpackage-lock.json
    2. 您结帐分支 2,导致您的 package.jsonpackage-lock.json 不再具有“A” - 尽管您的 node_modules 保持不变(gitignored),这意味着“A”仍然存在。
    3. 您在分支 2 上运行 npm install,它使用您的 package.jsonpackage-lock.json 根据他们的规范更新您的 node_modules。因为他们没有“A”,所以它会从您的 node_modules 中删除。
    4. 您结帐分支 1,并且您的 node_modules 再次不受此 git checkout 的影响 - 这意味着您需要再次运行“npm install”才能在 node_modules 中恢复“A”。

    【讨论】:

    • 嘿,谢谢!我在脑海中想到了第 3 步,但我不确定。你确定 npm 会删除已经安装但未在下一个 npm install 的 package.json 中列出的 pakcage 吗?
    • 是的。 package.json 准确地指定了 node_modules 中应该包含的内容。这就是允许其他开发人员/机器(您的代码在其上运行)运行与您在计算机上看到的相同的原因。
    猜你喜欢
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多