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

时间:2017-06-15 17:33:40

标签: node.js electron package.json

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

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

知道为什么会这样吗?

9 个答案:

答案 0 :(得分:22)

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

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

答案 1 :(得分:7)

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

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

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

    我希望这会奏效。

答案 2 :(得分:1)

我的系统上安装了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并修复了

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

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

1。npm audit

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

2。npm i packagename

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

3。npm install

这时安装顺利进行,没有任何滞后或挂断。希望对遇到类似问题的人有所帮助:)。

答案 5 :(得分:0)

  1. 删除package.lock.json

  2. 删除node_modules

  3. 运行npm update

答案 6 :(得分:0)

如果您有一台Windows计算机,但您没有该计算机的管理员权限。

尝试删除node_modules并使用'npm install'从命令行以

进行安装

“管理员”

有效!

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

答案 7 :(得分:0)

如果要使用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或任何软件包锁:安装实际上是冻结的。

答案 8 :(得分:0)

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

npm clear cache --force
npm update