为什么Node模块会进入.staging文件夹?

4th*_*ace 28 node.js package.json electron

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

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

知道为什么会这样吗?

tho*_*ows 28

这仅在模块下载和安装之前暂时发生.Node似乎这样做,所以它可以将你正在安装的所有模块的常见子模块放在一起,这样它就可以更好地构建节点模块文件夹(主要用于windows用户).

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

  • 值得注意的是,`preinstall`脚本在`.staging`目录中运行,而`postinstall`脚本在实际目标目录中运行. (2认同)

小智 18

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

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

    npm install
    
    Run Code Online (Sandbox Code Playgroud)

注意: - ".staging"表示,这些依赖项正在下载,因此对于临时基础,它将所有这些依赖项保留在".staging"文件夹下.一旦所有内容都正确下载,它将只在node_modules下展示它们.

我希望这会奏效.

  • 显然在 Windows 中我们不能有以点 (.) 开头的文件夹名称...我在 ubuntu 中启动我的项目,然后转移到 Windows,所以我遇到了这个“.staging”文件夹问题,删除 package-lock.json 解决了它。 。 (2认同)

Clo*_*nch 6

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

npm ci
Run Code Online (Sandbox Code Playgroud)

npm install文档指出了和之间的差异npm ci

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


小智 5

.staging 是一个临时的 npm 文件夹,在下载模块时临时保存在其中,如果 package.json 下载仍未完成,则创建的文件夹将保留,直到安装完成。

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