Nodejs pm2 乱码,谁遇到过

Nodejs pm2 乱码,谁遇到过

┌──────────┬────┬─────────┬──────┬────────┬──────┬───────────┬────────┬────────────┬─────────────â”
│ App name │ id │ mode    │ PID  │ status │ port │ restarted │ uptime │     memory │    watching │
├──────────┼────┼─────────┼──────┼────────┼──────┼───────────┼────────┼────────────┼─────────────┤
│ www      │ 0  │ cluster │ 3484 │ online │      │         0 │ 0s     │ 8.059 MB   │ unactivated │
└──────────┴────┴─────────┴──────┴────────┴──────┴───────────┴────────┴────────────┴─────────────┘

这些乱码的部分本应该是pm2的显示边框,现在都乱码了,谁知道是什么原因?


10 回复

Node.js PM2 乱码问题

在使用 PM2 管理 Node.js 应用时,有时会遇到控制台输出的乱码问题。这种现象通常是因为终端字符编码设置不正确导致的。下面将详细解释可能的原因,并提供解决方案。

可能的原因

  1. 终端字符编码不匹配

    • 终端(如 Terminal、iTerm2 或 Windows 的命令提示符)的字符编码设置与 PM2 输出的字符编码不匹配。
  2. 环境变量设置错误

    • 环境变量中的 LANGLC_ALL 设置不正确,导致 PM2 输出乱码。

解决方案

1. 检查并设置终端字符编码

确保终端的字符编码设置为 UTF-8。以常见的终端为例:

  • macOS/Linux: 在终端中输入以下命令来检查当前的字符编码设置:

    echo $LANG
    

    如果输出不是 en_US.UTF-8 或类似的 UTF-8 编码,可以临时修改:

    export LANG=en_US.UTF-8
    
  • Windows: 在命令提示符中输入以下命令来检查当前的字符编码设置:

    chcp
    

    如果输出不是 65001 (UTF-8),可以临时修改:

    chcp 65001
    
2. 修改 PM2 配置文件

如果上述方法无效,可以在 PM2 的配置文件中添加一些环境变量设置。创建或编辑 ecosystem.config.js 文件,例如:

module.exports = {
  apps: [{
    name: 'www',
    script: './app.js',
    env: {
      NODE_ENV: 'production',
      LANG: 'en_US.UTF-8'
    }
  }]
};

然后使用 PM2 启动应用:

pm2 start ecosystem.config.js

示例代码

假设你有一个简单的 Node.js 应用 app.js,你可以通过以下步骤进行测试:

  1. 创建 app.js 文件:

    console.log('Hello, World!');
    
  2. 创建 ecosystem.config.js 文件:

    module.exports = {
      apps: [{
        name: 'www',
        script: './app.js',
        env: {
          NODE_ENV: 'production',
          LANG: 'en_US.UTF-8'
        }
      }]
    };
    
  3. 使用 PM2 启动应用:

    pm2 start ecosystem.config.js
    

通过以上步骤,你应该能够解决 PM2 控制台输出乱码的问题。如果问题仍然存在,请检查系统级的字符编码设置,确保所有相关的配置都正确无误。


你用的ssh客户端有问题吧

你是在windows下吗?

我也那么觉得,有什么好推荐吗?

CentOS,之前没问题的,好像是内容当中被掺入了中文字符。

是客户端编码问题,至少我是这个问题

从来没遇到,是不是系统的问题?

ssh客户端的编码改成utf-8

奇葩啊

你遇到的乱码问题通常是由于终端字符编码设置不正确导致的。PM2 使用 ANSI 转义码来生成表格和颜色,如果终端不支持或未正确配置为 UTF-8 编码,就会出现乱码。

解决方法

  1. 检查终端字符编码

    • 在大多数现代终端中,默认应该已经是 UTF-8 编码。你可以通过以下命令检查:
      echo $LANG
      
    • 如果输出不是 en_US.UTF-8 或类似的UTF-8编码,你需要修改环境变量。
  2. 设置环境变量

    • 在终端中临时设置(每次打开新终端需要重新设置):
      export LANG=en_US.UTF-8
      export LC_ALL=en_US.UTF-8
      
    • 永久设置(编辑 ~/.bashrc~/.zshrc 文件):
      echo 'export LANG=en_US.UTF-8' >> ~/.bashrc
      echo 'export LC_ALL=en_US.UTF-8' >> ~/.bashrc
      source ~/.bashrc
      
  3. 使用 pm2 命令时指定编码

    • 你也可以直接在 pm2 命令前添加编码设置:
      LANG=en_US.UTF-8 pm2 monit
      

示例代码

# 设置环境变量并运行 PM2
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
pm2 monit

总结

通过设置正确的字符编码,你应该可以解决 PM2 输出乱码的问题。确保你的终端支持并正确配置为 UTF-8 编码即可。

回到顶部