我们需要在 Gatsby 中从头开始安装所有插件吗?

问题描述

当我们从 bitbucket 或任何其他平台克隆任何存储库时,我们没有获得节点模块。 因此,当我们运行 gatsby develop 时,它说“加载本地开发命令时出现问题。 Gatsby 可能未安装在您站点的 node_modules 中。也许运行 npm install'。 但是当我运行 npm install 时,它会花费很多时间,然后出现“SOCKET_ERR”错误。 那么是因为 node_modules 没有克隆还是我需要从头开始安装所有插件

解决方法

node_modules 不得上传到存储库,绝不。因此,回答您的问题,是的,每次克隆存储库时,您总是需要安装依赖项。为什么?

原因有很多,但本质上是:

  • node_modules 很重,因此不值得将那一堆依赖项上传到存储库中。您节省了数百 MB。
  • node_modules 与运行环境(操作系统、依赖版本、Node、版本等)严格相关,因此每次运行 npm install 时,您都在安装每个模块的正确版本。以相反的方式进行操作会导致整个项目出现问题
  • 它将避免跨合并的多个 git 冲突。如果更改依赖项,拉取请求或合并将在该过程中涉及更多文件。工具变得更慢,甚至决定不显示完整差异(例如 GitHub)
  • 不提交(和推送)node_modules 意味着您需要将 package.json(和 package-lock.json)中的所有模块列为强制性步骤。这很好,因为您可能没有努力这样做,如果您不这样做,某些 npm 操作可能会中断。

理想情况下,完整安装过程应仅在第一次发生(或由于某些配置问题或冲突而不得不删除 node_modules 时)。

关于您的 SOCKET_ERR,它可能有多个来源,但有时是由 node-gyp 依赖项(与 Python 版本相关)引起的,请尝试重新安装或重新构建。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...