【问题标题】:Why is it necessary to run 'npm install' when I already have all the dependence in node_module folder当我已经拥有 node_module 文件夹中的所有依赖项时,为什么需要运行“npm install”
【发布时间】:2017-07-28 14:15:42
【问题描述】:

当我已经拥有 node_module 文件夹中的所有依赖项时,为什么需要运行“npm install”。

在我的机器上成功运行'npm install'后,我想在另一台机器上设置相同的项目,为什么我已经下载了node_module文件夹中的所有依赖项后再次运行'npm install'?

【问题讨论】:

  • “将我的代码提供给其他机器”究竟需要什么?如果你不运行命令会发生什么?
  • 我想在另一台机器上设置相同的项目。我将完整的项目文件夹复制到另一台机器上。我也编辑了问题。
  • 不,在我的情况下,我们每次都需要运行这个命令。抱歉打字错误,nodemodeule 与 node_module 相同。我也编辑了这个问题。
  • 查看 node 两个系统中的版本。看到你在本地的版本也应该在那里,以防发生冲突。并在您运行应用程序时分享错误。

标签: angularjs node.js npm


【解决方案1】:

首先我想告诉你两件事:

  • 由于您的项目依赖于一些包(node_modules),就像一些包依赖于其他包一样。
  • 当我们使用命令npm install package -g 安装一些软件包时,-g 将把它安装在任何项目都可以访问的全局文件夹中。通过使用 -g,包不会添加到 node_modules。

现在这里是您问题的答案。可能某些包的依赖项在一台机器上作为全局安装而不是在另一台机器上安装。当开发人员在同一台机器上处理许多项目时,可能会发生这种情况,并且可能是他们安装了全局包。所以这种情况下需要执行npm install命令。

【讨论】:

  • 那么这个问题的解决方法是什么?
  • 最好只分享package.json 文件。 node_modules 文件夹不应共享。下一个人或机器将根据需要使用package.json 安装软件包
  • 您也可以使用命令npm update。这将更新包的依赖项和版本等
  • 我确实希望新人什么都不运行,并且能够直接访问完整的应用程序。具体流程是什么?
  • 您可以在某个服务器上部署您的应用程序。即herokuOpenshift等。然后你可以简单地分享应用程序网址
【解决方案2】:

npm install 从 package.json 中提取所有依赖项,下载并保存在 node_modules 文件夹中。如果您已经在本地安装了所有依赖项,则无需一次又一次地运行 npm install。

当你安装一个新的依赖时,你会运行npm install <package-name> --save,为什么第一次是--save?因为它在您的 package.json 中添加了新安装的依赖项。我们从不将 node_modules 推送到我们的 git 存储库,只有更新的 package.json 被推送到存储库。在这种情况下,如果一个新人从 repo 中提取您的代码,他只会运行npm install,并且您的 package.json 中提到的所有依赖项都将在他的项目本地可用。以上就是我们为什么使用 package.json 的简短介绍,希望对您有所帮助。

【讨论】:

  • 问题是他是否推送 node_module 比他面临的问题。
  • Himanshu 是对的,我们在 node_module 中拥有了所有的依赖项,现在仍然需要新人来运行命令。为什么?
  • 如果您的 package.json 中提到的所有依赖项在您的计算机上本地可用,则无需再次运行 npm install。此外,当您运行 npm install 时,它会告诉您添加了哪些软件包,如果所有软件包都已可用,它将显示 up to date in xxs
【解决方案3】:

检查两个系统中节点的版本。
我想这会是个问题。您本地系统的版本可能比服务器高。
可能无法编译更高版本,请确保两个节点的版本相同,以减少冲突。

【讨论】:

  • 除了node包我还需要检查什么吗?
  • 是检查节点版本。
猜你喜欢
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-18
相关资源
最近更新 更多