Node.js - 部署 Node.js 应用程序时是否需要在生产服务器上重新安装所有模块

2024-03-23

我已经开发了我的第一个 Node.js pp。目前,它只是放在我的笔记本电脑上。

在开发过程中我必须安装一些模块:

npm install socket.io
npm install [email protected] /cdn-cgi/l/email-protection
npm install iniparser
npm install js-yaml
npm install nodemailer

我已经“每个项目”安装了所有这些,而不是全局安装。

我的项目目录如下所示(我的代码全部在push_server.js中):

|
|--- push_server.js
|
|--- node_modules
     |--- iniparser
     |--- js-yaml
     |--- mysql
     |--- socket.io
     |--- nodemailer

现在我想将这个项目推送到生产服务器。

我的问题是:我可以上传整个代码库(包括已安装的模块)还是应该只上传我的应用程序的代码并在服务器上一一重新安装模块?

注意:我的开发机器运行 Ubuntu 10.04,生产服务器运行 CentOS 5.3

我认为所有这些模块都仅由 js 文件组成,因此应该没问题。
但是,npm 安装的模块是否有可能在本地计算机上编译某些代码,因此该代码可能无法在另一台计算机上运行。另外,我如何知道模块是否这样做?

希望这个问题不太愚蠢——我刚刚开始使用 Node.js。

Thanks.


你绝对应该复制node_modules如果可能的话。

如果您在服务器上重新下载它们,则可能会面临获得正在使用的模块版本略有不同的风险。即使您需要严格的模块版本 X,该模块也可以再次对其他模块 Y Z 具有通配符依赖性。这意味着,如果更新 Y 并将其发布到服务器,那么它现在将使用与您使用的代码不同的 Y 代码来运行用于您的本地测试和验证。

在某些情况下,您甚至可能在部署时没有可用的所需模块,因为作者已决定出于某种原因取消发布该包。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node.js - 部署 Node.js 应用程序时是否需要在生产服务器上重新安装所有模块 的相关文章

  • 从 MongoDB+Node.js 获取数据到客户端 JavaScript

    如何使用 Node js 连接 MongoDB 然后将结果传递给客户端 JavaScript 并以 HTML 形式显示 var http require http var URL require url var Db require mon
  • Node Js:Redis 作业在完成其任务后未完成

    希望你们做得很好 我在我的 Nodejs 项目中实现了 BullMQ Bull 的下一个主要版本 来安排发送电子邮件的作业 例如 发送忘记密码请求的电子邮件 所以 我编写了如下所示的代码 用户服务 await resetPasswordJo
  • 如何在 Express 中模拟中间件以跳过单元测试的身份验证?

    我在 Express 中有以下内容 index js var service require subscription service var auth require auth auth service var router expres
  • RoboMongo:不显示所有文档

    当我打开集合时 它仅显示前 50 个文档 而不是全部文档 如何使 RoboMongo 显示集合中的所有文档 最好是自动 罗博蒙戈结果 https i stack imgur com K5fn8 png 2019 年 12 月 6 日更新 最
  • 快递+护照+会话。为每个页面加载执行查询

    我正在使用 Express 4 2 0 和 Passport 0 2 0 我使用的express session中间件是1 2 1 我对节点身份验证比较陌生 所以请耐心等待 我注意到 对于每个页面加载 护照正在执行数据库请求 Executi
  • nodejs googleapis,authClient.request 不是函数

    我正在像这样的一个函数中创建一个 oauth2client 并返回它 实际上 我确实传递了客户端 ID 秘密 重定向 URL 和凭据 据我检查 这些都是正确的 var OAuth2 google auth OAuth2 var oauth2
  • 刷新后,socket.io 客户端多次侦听同一事件

    我得到了一个包含项目表的母版页 成功后表数据将不断刷新socket io与服务器的连接 单击表中的某个项目 该项目的 id 将传递到服务器 时 将使用 ajax 加载子视图 并通过侦听来自服务器的事件不断刷新该子视图 现在的问题是 通过选择
  • 创建shell可执行全局节点模块

    我尝试创建节点模块 我成功了 我用了npm install g在代码目录中 它创建了这个模块文件夹 AppData Roaming npm node modules myfirstmodule 现在我想让一个文件作为命令可执行 例如 pm2
  • 如何从 docker 容器运行 webpack 构建?

    我正在制作的应用程序是用 ES6 编写的 其他好东西是由 Docker 容器内的 webpack 转译的 目前 一切工作从创建内部目录 安装依赖项到创建编译的捆绑文件 当运行容器时 它说 dist bundle js 不存在 除非我在主机目
  • 如何在 NodeJS 中使用 PhantomJS 模拟鼠标悬停或在页面上运行 JS 功能

    NodeJS PhantomJS 使用 Cheerio 进行内容解析 需要解析包含动态加载的div 提示 的网页 该事件可以在许多表 td 上 这是一个示例 当我将鼠标悬停在特定的 td 上时 我看到这个带有数据的橙色块 它动态加载了函数
  • npm install -D sass-loader node-sass Vue.js 2021

    您好 问题是为 Vue js 设置 SASS 我跑 Node js 15 7 0 Vue js vue cli 4 5 11 这是我在运行此命令时在控制台中遇到的错误 npm install D sass loader 节点 sass np
  • 嵌套对象的 AJV 模式验证

    函数返回的对象看起来像这样 answer vehicle type 1 message Car model VW color red 答案 对象始终存在 其他字段基于 vehicle type E g 如果vehicle type 1 则有
  • 托管 React 应用程序和 Express 服务器 cpanel

    我是托管新手 如果有人可以非常详细地解释 这将对我有很大帮助 我有以下问题 我有前端使用react app和后端使用expressjs and mysql 我的计算机中有一个可以运行的简单应用程序 我使用本地主机启动后端和前端 它们工作完美
  • 从React Redux中的package.json获取版本号(create-react-app)

    OP 编辑 如果其他人遇到此问题 该应用程序是使用创建的创建反应应用程序 https github com facebookincubator create react app 这限制导入到 src 文件夹内 但是如果你将react scr
  • 垃圾收集器不适用于 NodeJS / Chrome 中的类型化数组

    我最初将其记录为原项目中的一个问题 https github com nodejs help issues 3590 它立即转移到帮助主题 没有很好的解释 所以现在我想在这里提问 如果我们在 NodeJS v14 v16 v17 中运行以下
  • Javascript 中的面向对象方法

    是否可以使用面向对象的方法在 Java 脚本中 我在中使用 JavaScript服务器端和客户端使用node js 当前我正在使用查询来进行CRUD操作而不是查询是否可以使用DTO S将数据保存在数据库中 是的 您可以使用原型继承来模拟它
  • 排除 npm 包中的测试代码?

    The 开发依赖 https docs npmjs com files package json devdependenciesnpm 的 package json 文档的部分说要在那里列出您的测试依赖项 以便您的包的用户不必拉取额外的依赖
  • 使用 WebSocket 是否会产生服务器成本?

    我已经离开了 PHP MySQL 的舒适区 因为语法 封装 过程的东西可能会让人沮丧 上周 我开始尝试并按照一些教程使用 Node js Socket IO 创建实时聊天应用程序 到目前为止 我从未使用过 WebSockets 做过任何事情
  • 如果 node_modules 目录存在,Azure 模拟器无法启动 Web 角色

    我想我只是偶然发现了一个非常奇怪的问题 我有一个相当大的解决方案 包括一个具有 3 个角色 两个工作角色和一个 Web 角色的 Azure 项目 Web角色基于asp net mvc和web api 昨天尝试 gulp 用于编译和捆绑较少的
  • Express js 错误:“express 已弃用 res.sendfile:请改用 res.sendFile”

    设置路径的正确方法是什么 在我的应用程序中 我使用此代码设置发送文件的路径 app get function req res get put post delete res sendfile dirname client views ind

随机推荐

  • 如何删除“clip-path”的不可见部分?

    我想剪切尺寸各不相同 高度各为 50 的图像 所以我想到使用 inset 方法clip path财产 但是 在这个属性中 切出的空间仍然保持高度 container display flex align items start img fl
  • 打开弹窗,让外人依然可以触摸

    如何在Android上打开PopupWindow并让所有其他组件可触摸而不关闭PopupWindow 它是这样创建的 public class DynamicPopup private final PopupWindow window pr
  • 线程“main”中的异常 java.lang.IllegalMonitorStateException

    我正在与Thread in Java我收到以下错误 我不明白为什么 Code import java util Random public class Test public static void main String args thr
  • 代码优先:仅在执行某些代码后才创建数据库?

    我想先使用代码创建一个数据库 我的数据库始终处于 DropCreateDatabaseAlways 模式 我注意到 如果我不尝试对数据库执行一些查询 例如 using var db new Models TnHContext var que
  • CodeIgniter - 获取最后一个 URI 段

    我试图获取 CI 中的最后一个 URI 段 但我不知道它的编号是多少 因为当用户单击页面内的链接时 将附加参数 整数 然后在控制器中使用它们通过 ajax 将相关数据库记录拉入页面 我如何告诉 CI 获取最后一段 就像是 record nu
  • 使用javascript在数组中组合单词

    假设我有一个数组 Alex Sam Robert 我想将它们组合起来 例如 获取第一个数组 0 并附加数组 2 这将是 AlexRobert array 0 的第一个字母是 A 并附加 array 2 的第一个字母 即 Robert 这将是
  • 使用 Extendscript 编写二进制文件。文件大小不正确

    进一步我的问题here https stackoverflow com questions 63022178 read binary file with extendscript我正在使用 Extendscript 将十六进制颜色列表从 P
  • 使用 OrbitControls 时锁定 x 轴旋转 - Three.js

    使用 OrbitControls 时锁定 x 轴旋转是否可行 目前我有一个挂在绳子上的圣诞星的对象模型 我希望它仅水平旋转 对于您的 OrbitControls 实例集 controls minPolarAngle Math PI 2 co
  • Twitter Bootstrap Datepicker 不会更新输入值

    我有这段代码 但现在我陷入困境
  • Unicode 联盟是否打算让 UTF-16 字符耗尽?

    当前版本的 UTF 16 只能编码 1 112 064 个不同的数字 码点 0x0 0x10FFFF Unicode 联盟是否打算让 UTF 16 字符耗尽 即创建一个代码点 gt 0x10FFFF 如果不是 为什么有人要编写 utf 8
  • Go中for循环中的多个变量

    我正在尝试在 Go 中编写一个带有多个变量的 for 循环 来自 javascript 世界 我想实现这样的目标 var i 10 var b 2 for var a b i i 2 b b some code 我尝试过这样的 原始翻译 i
  • laravel 5 在运行时更改数据库名称

    有没有办法更改连接的数据库名称而不是添加另一个连接 如果我在 Config database connections 中添加 3 或 5 个数据库是可以的 但是如果我正在使用 100 个或更多数据库怎么办 由于所有人都使用相同的主机 用户名
  • 什么属于聚合根

    这是一个实用的领域驱动设计问题 从概念上讲 我认为我得到了聚合根 直到我去定义一个聚合根 我有一个 Employee 实体 它已作为聚合根出现 在商业领域 some员工可以记录与工作相关的违规行为 员工 违规行为 由于并非所有员工都受到此限
  • 将数据表从一个数据集复制到另一个数据集

    我正在尝试将位于不同数据集 Y 内部的数据表添加到新的数据集 X 如果直接添加的话 会出现以下错误 DataTable 已属于另一个 DataSet 我是否必须克隆 DataTable 并将所有行导入其中 然后将新的 DataTable 添
  • 动画径向渐变CSS3:从左到右移动? [复制]

    这个问题在这里已经有答案了 我想要一个带有径向渐变的动画背景radial gradient circle rgba 255 255 255 0 8 0 rgba 255 255 255 0 100 将其从左向右移动 http jsfiddl
  • Magento 多个 Authorize.net 网关

    我见过这个关于货币类型的问题 但我要问的是如何在同一商店为不同的信用卡类型配置第二个 Authorize net 帐户 因此 我们希望一些信用卡使用第一个主 Authorize net 网关 而其他信用卡使用辅助 Authorize net
  • Background.js 找不到使用内容脚本注入的内容

    我的 Chrome 扩展有一个内容脚本 可以将自定义 DIV 注入当前页面 这部分有效 但是 该扩展还有一个右键单击上下文菜单 单击该菜单时 应该以某种方式修改此注入的 DIV 比方说 向该 DIV 添加一些文本 问题是找不到注入的内容 右
  • 尝试在Python中导入docx

    公平警告 我对 python 非常陌生 所以请原谅我犯的任何愚蠢错误 我希望能够使用 Python 在 Mac 上打开 关闭 操作 读取 Word 文档 docx 文件 python docx 模块看起来非常有用 所以我一直尝试将其安装在我
  • 如何在组织模式下取消选中下一个循环/重复任务的复选框

    对于组织模式下的循环或重复任务 在该任务内 如果有多个复选框且全部标记为勾选 则在一般任务屏蔽为 完成 后 下一个循环周期的复选框仍显示为勾选 并且应该取消勾选 例如 TODO Cyclic monthly home 0 5 SCHEDUL
  • Node.js - 部署 Node.js 应用程序时是否需要在生产服务器上重新安装所有模块

    我已经开发了我的第一个 Node js pp 目前 它只是放在我的笔记本电脑上 在开发过程中我必须安装一些模块 npm install socket io npm install email protected cdn cgi l emai