【问题标题】:Why do Node modules go into .staging folder?为什么 Node 模块会进入 .staging 文件夹?
【发布时间】:2017-11-18 07:22:07
【问题描述】:

我有一个 Electron 应用程序,我正在尝试为其安装节点模块。当我运行npm install 时,它会创建node_modules 文件夹,但所有模块都进入一个名为.staging 的子文件夹中。每个模块还附加了-xxxxx,其中 x 是一些随机的字母数字。

我创建的其他 Electron 应用程序从未这样做过。所有节点模块都位于node_modules 的根目录中,并且没有附加-xxxxx

知道为什么会这样吗?

【问题讨论】:

    标签: node.js electron package.json


    【解决方案1】:

    我也遇到了同样的问题,我尝试了以下步骤:

    1. 删除 package-lock.json
    2. 删除节点模块文件夹
    3. 尝试使用以下命令安装它(应该在开放网络中)

      npm install
      

    注意:-“.staging”意味着,这些依赖项正在被下载,因此临时将所有这些依赖项保存在“.staging”文件夹下。一旦所有内容都正确下载,它将仅在 node_modules 下展示它们。

    我希望这会奏效。

    【讨论】:

    • 显然在windows中我们不能有以点(。)开头的文件夹名称......我在ubuntu中开始我的项目然后移动到windows所以我面临这个'.stagging'文件夹问题,删除包-lock.json 解决了它...
    • 非常感谢! :)
    【解决方案2】:

    这只会在模块下载并安装之前暂时发生。 Node 似乎是这样做的,因此它可以将您正在安装的所有模块中的公共子模块放在一起,这样它就可以更好地构建节点模块文件夹(主要针对 Windows 用户)。

    如果在 npm 安装完成后发生这种情况,则可能是您的节点安装有问题或安装失败。

    【讨论】:

    • 您的回答似乎不适用于我的情况。这发生在一个 Electron 应用程序上。它不会发生在其他任何人身上。问题不在于 NPM 安装。
    • 我在 npm 安装过程中看到文件树多次出现这种情况。观察另一个项目的安装,看看你是否能看到它发生。它也是具有 2 package.json 结构的电子应用程序吗? github.com/electron-userland/electron-builder/wiki/…
    • 如果您使用的是 NVM,您可以尝试其他版本的节点
    • 值得注意的是preinstall脚本运行在.staging目录,而postinstall脚本运行在实际目标目录。
    【解决方案3】:

    如果您使用 CI/CD 自动安装 node_modules,您应该查看 npm ci。另请查看this Stackoverflow 问题。

    npm ci
    

    文档指出了npm installnpm ci 之间的区别。

    • 项目必须有一个现有的package-lock.jsonnpm-shrinkwrap.json
    • 如果包锁中的依赖项与package.json 中的依赖项不匹配,npm ci 将退出并报错,而不是更新包锁。
    • npm ci 一次只能安装整个项目:无法使用此命令添加单个依赖项。
    • 如果node_modules 已经存在,它将在npm ci 开始安装之前被自动删除。这很好,因为它避免了像rm -rf node_modules 这样的事情。
    • 它永远不会写信给package.json 或任何包锁:安装基本上是冻结的。

    【讨论】:

      【解决方案4】:
      1. 删除 package.lock.json

      2. 删除节点模块

      3. 运行npm update

      【讨论】:

      • 解释你的答案。
      【解决方案5】:

      我的系统上安装了 2 个版本的节点。 nodejs v4.2node v8.6

      我认为这可能是冲突的,所以我使用以下命令删除了nodejs v4.2

      sudo apt-get remove nodejs
      

      并用

      链接路径
      sudo ln -s /usr/bin/node /usr/bin/nodejs
      

      我再次运行npm install,它得到了修复

      【讨论】:

        【解决方案6】:

        这对我有用 我将项目从 C 驱动器移动到其他驱动器并运行以下命令 如果您正在运行此项目和现有项目,请备份旧节点模块

        npm clear cache --force
        npm update
        

        【讨论】:

          【解决方案7】:

          .staging 是一个临时的 npm 文件夹,模块在下载的时候会临时保存在这里,如果 package.json 下载还没有完成,创建的文件夹会一直保留,直到安装完成。

          问题可能是硬盘空间不足。

          【讨论】:

            【解决方案8】:

            我遇到了类似的问题并尝试了上述答案,但对我没有用; 我按照以下步骤解决了这个问题-

            1.npm audit

            通过运行 npm audit,我得到了待安装软件包的列表-

            2.npm i packagename

            从列表中一一安装一两个包后,我使用了

            3.npm install

            此时安装顺利,没有任何延迟或挂断。希望这对面临类似问题的人有所帮助:)。

            【讨论】:

            • 在 npm 审核之前,package-lock.json 应该可用。为此,您应该执行 npm i --package-lock-only。在你做 npm 审计之后。
            【解决方案9】:

            如果您有一台没有管理员权限的 Windows 机器。

            尝试删除 node_modules 并在命令行中使用'npm install' 安装

            '管理员'

            有效!

            无论如何,它归结为一个开放的网络;)

            【讨论】:

              猜你喜欢
              • 2016-03-25
              • 2020-08-25
              • 2020-01-26
              • 2019-04-14
              • 2021-05-15
              • 2015-06-18
              • 2021-11-12
              • 2013-03-10
              • 1970-01-01
              相关资源
              最近更新 更多