PM2 调试技巧分享

什么是PM2

PM2是一个Node.js应用程序的生产流程管理器,它能够管理Node.js应用程序的启动、停止、重启、日志输出等等,同时也支持负载均衡模式。

调试 PM2 应用程序

在开发过程中,我们经常需要调试应用程序。下面介绍几种调试PM2应用程序的方式:

1. 通过PM2日志来调试应用程序

通过PM2的日志可以看到应用程序的输出信息。在pm2的日志中, 默认情况下没有标明输出来源, 所以在调试过程中可以通过console.log在控制台输出信息来进行排查。

-------------------- - - - -- -----

如果你需要输出更多详细信息,可以设置环境变量DEBUG=True,这样就可以看到更丰富的日志信息。

2. 使用 node-inspector 调试 PM2 应用程序

通过命令行开启 --debug 引导 Node.js 应用程序启动并激活一个远程调试端口,这样可以使用 Chrome 开发者工具来调试你的 Node.js 应用程序。同时, PM2 把这个端口号 和 Node.js 应用程序的 PM2 上下文 ID 映射到了一个静态文件 ,所以即使应用程序在集群中跑,在扩容缩容后仍然可以继续调试。

启动 node-inspector 服务:

- --- ------- -- --------------
- --------------

启动你的应用程序:

- --- ----- ------ ------ ------- -- -------

接着,打开 Chrome 浏览器,输入网址:

- ---- ----------------------------------

3. 使用 VSCode 调试 PM2 应用程序

VSCode 远程调试 Node.js 应用程序并不需要启动多个调试目标。你可以通过所有其他的调试器即可调试 PM2 的 JavaScript 源码。因为在 PM2 集群中,各个节点都监听同一个调试器端口。所以,打开任意一个集群节点进行调试。

在 VS Code 中安装扩展文件:

Debugging in VS Code

在启动 PM2 应用程序时 Activate the Node.js debugger with the --inspect* option, which allows us to attach our debugging client to an instance in Remote Debugging.

--- --- - -----------------
---------------- ---------- -
  ---------------- --- -- --------- -- ---- --------
---

将上述代码保存为 app.js,并用 PM2 运行:

- --- ----- ------ ------ ------- -- --------------

打开 VSCode ,过程:点击“调试”面板-点击“启动调试按钮”-选择“Node.js: attach”-回车

A hook will be printed to the console, which tells you the debugger is listening. You can now process requests with the debugger attached. The hook also contains information about the file being debugged, which is important in cases where more than one project is associated with the same PM2 instance.

Via: PM2 Website

总结

PM2 是一个十分强大的 Node.js 应用程序管理工具,同时也便于开发者调试。本文介绍了 PM2 调试模式的三种方式:通过 PM2 日志输出、使用 node-inspector 和使用 VSCode 远程调试。希望这些技巧能够帮助你更加高效地调试 PM2 应用程序。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6486cc9548841e9894558f87


猜你喜欢

  • ECMAScript 2017 新增的标准库:Object.keys() 的局限性与解决方案

    简介 ECMAScript 2017 是 JavaScript 语言的最新标准版本,它增加了许多新的特性和标准库。其中,Object.keys() 是非常实用和重要的一个库。

    1 年前
  • Chrome 中 Flexbox 布局布局错误的排查方法

    Flexbox(弹性盒子布局)是一种非常流行的前端布局方式,然而,当我们在 Chrome 中使用 Flexbox 布局时,有时会出现布局错误,这篇文章将为大家介绍如何排查解决这些问题。

    1 年前
  • 提高 JVM 性能优化效率

    在前端中,JVM 的性能是一个重要的衡量标准。优化 JVM 性能可以提高应用程序的响应速度、稳定性和效率。本文将介绍一些提高 JVM 性能优化效率的方法,同时附有示例代码,帮助读者更好地了解这些技术。

    1 年前
  • TypeScript 中如何使用装饰器实现依赖注入?

    随着前端技术的不断发展,前端应用的规模越来越大,代码复杂度不断增加,如何组织代码成为一个非常重要的问题。其中之一就是如何管理和注入组件的依赖关系,而装饰器是我们可以利用的工具之一。

    1 年前
  • ESLint 报错:Parsing error: Unexpected character '@'

    什么是 ESLint? ESLint 是一个基于 JavaScript 的静态代码检查工具,可用于识别 ECMAScript 平台的代码中的问题。它可以帮助开发者避免常见的 JavaScript 错误...

    1 年前
  • 用 JS 和 Fastify 构建 PWA 应用

    在现代 Web 开发中,构建 PWA(Progressive Web Apps)是一个非常热门的话题。PWA 应用具有很多优势,比如可以在离线情况下访问、更快的加载速度、原生应用的功能等等。

    1 年前
  • 利用 Promise 封装 XMLHttpRequest

    前言 随着 Web 技术的不断发展,前端的开发也越来越复杂,需要与服务器进行更多的交互。其中 XMLHttpRequest(XHR)是一种常用的交互方式,它可以在不刷新页面的情况下,向服务器发送请求并...

    1 年前
  • 使用 Angular Material 设计优美的 UI 界面

    引言 前端开发不仅要有良好的逻辑思维,还需要注意页面的设计和美观度。在设计 UI 界面时,Angular Material 可以帮助开发者轻松创建美观、响应式的用户体验。

    1 年前
  • Kubernetes 跨集群管理之 Multi-cluster Kubernetes

    Kubernetes 是目前最流行的容器编排平台。随着云原生技术的不断演化,越来越多的企业开始在生产环境中使用 Kubernetes 来管理容器应用程序。但是,企业常常会运行多个 Kubernetes...

    1 年前
  • ES11 中的 matchAll():更加高效的正则表达式匹配方法

    在编写前端代码中,我们常常需要用到正则表达式来匹配一定格式的字符串。而在 ES11 中,新增了 matchAll() 方法,可以更加高效地进行正则表达式的匹配。本文将详细介绍 matchAll() 方...

    1 年前
  • SSE 遇到跨站攻击(XSS)怎么办?

    什么是 SSE? SSE(Server-Sent Events)指的是服务器主动向浏览器推送数据的一种技术,也称作 "服务器推送"。与传统的客户端轮询方式不同,SSE 是服务器通过不断向浏览器推送最新...

    1 年前
  • SASS 常用函数的应用

    SASS 是一款强大的 CSS 预处理器,它提供了许多方便快捷的函数可以帮助我们更加轻松地编写 CSS 样式。在这篇文章中,我们将介绍 SASS 常用函数的应用,并提供示例代码及学习指导,希望能为读者...

    1 年前
  • Vue SPA 应用状态管理:Vuex 实战篇

    在Vue的开发过程中,状态管理是一个极其重要的问题。Vue通过组件化的设计,使得前端应用开发更为灵活和高效。然而,随着应用的复杂度不断增加,组件与组件之间的状态交互如何有效管理、传递和维护就成为了一个...

    1 年前
  • 如何做好 APP 的无障碍辅助功能设计

    无障碍辅助功能是指为了方便视觉、听觉、语言和其他特殊需求用户的使用,设计师和开发人员在产品设计和开发阶段采取的措施。在 app 开发中,无障碍辅助功能设计同样至关重要,是提高产品体验的必要部分。

    1 年前
  • 为什么 GraphQL 会成为下一代 API 标准

    近年来,GraphQL 作为一种新兴的 API 技术,受到了越来越多的关注和广泛的应用。其独特的设计思想和特性使得它成为了下一代 API 标准的有力候选者。本文将深入分析 GraphQL 的优势和不足...

    1 年前
  • Vue.js 与 MintUI 集成实践:如何使用 MintUI 组件

    前言 MintUI 是一个基于 Vue.js 的移动端 UI 组件库,有着丰富的 UI 组件和易于使用的 API。Vue.js 是一种渐进式 JavaScript 框架,被广泛用于构建大型单页面应用程...

    1 年前
  • Babel 编译时遇到的一些错误及解决方法

    在我们的前端开发中,我们经常使用到 Babel 来编译 Javascript 代码,以支持更多浏览器或者更高版本的 Javascript 标准(ES6/ES7/ES8)。

    1 年前
  • Sequelize-Node.js ORM 框架学习笔记

    什么是 Sequelize? Sequelize 是一个 Node.js ORM 框架,它支持多种数据库(PostgreSQL、MySQL、MariaDB、SQLite 和 Microsoft SQL...

    1 年前
  • Flutter 中使用 Material Design 风格的轮播图实现方法

    Flutter 是谷歌推出的跨平台移动端开发框架,其拥有丰富的组件库和强大的渲染引擎,可以快速构建高性能的应用程序。在应用程序中,轮播图是一个常见的 UI 组件,它可以展示多张图片或者卡片,在视觉上增...

    1 年前
  • PM2 的日志管理:如何解决日志堆积等问题?

    在前端开发过程中,日志管理是一个非常重要的环节。日志管理不仅可以帮助我们更好地了解应用的运行情况,还能帮助我们定位问题。在 Node.js 应用中,我们通常使用 PM2 进行进程管理。

    1 年前

相关推荐

    暂无文章