You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何直接对Nuxt构建后的应用使用PM2的watch监听功能?

问题根因
  • 你当前ecosystem.config.js中的watch配置处于注释状态,即使启动命令追加了--watch参数,PM2默认的监听规则也不会精准匹配Nuxt构建后的核心生效产物,自然不会触发重启逻辑。
  • Nuxt执行npm run build后,实际生效的运行代码存放在.nuxt(Nuxt2)或.output(Nuxt3)目录下,默认的全局监听规则会漏掉这类专项构建产物目录的变更。
修复步骤

1. 修改ecosystem.config.js配置

取消watch相关配置的注释,指定监听的产物目录,添加忽略规则和延迟重启逻辑,参考配置如下:

const path = require('path');

module.exports = {
  apps : [{
    name: 'UI1',
    exec_mode: 'cluster',
    instances: 0,
    script: path.join(__dirname, '../app_build/node_modules/nuxt/bin/nuxt.js'),
    args: 'start',
    watch: [
      path.join(__dirname, '../app_build/.nuxt'), // Nuxt2填这个
      // path.join(__dirname, '../app_build/.output'), // Nuxt3填这个,二选一
    ],
    ignore_watch: ['node_modules', 'logs', '.git'],
    watch_delay: 3000, // 变更后延迟3秒重启,避免构建过程中频繁触发重启
    env:{
      HOST: '0.0.0.0',
    },
    cwd: path.join(__dirname, '../app_build'),  
  },
  {
    name: 'UI0',
    script: path.join(__dirname, '../app_build/node_modules/nuxt/bin/nuxt.js'),
    args: 'start',
    watch: [
      path.join(__dirname, '../app_build/.nuxt'), // Nuxt2填这个
      // path.join(__dirname, '../app_build/.output'), // Nuxt3填这个,二选一
    ],
    ignore_watch: ['node_modules', 'logs', '.git'],
    watch_delay: 3000,
    env:{  
      HOST: '0.0.0.0',
    },
    cwd: path.join(__dirname, '../app_build'),
  }],  
};

2. 重启PM2实例生效配置

首先清理原有实例:
pm2 delete UI0
再用修改后的配置启动,不需要额外加--watch参数:
pm2 start ecosystem.config.js --only UI0

后续你执行npm run build完成构建后,PM2会自动检测到产物目录变更,延迟3秒后自动重启应用,无需手动执行pm2 restart命令。

注意事项
  • PM2低版本的cluster模式对watch功能兼容有问题,如果你要在cluster模式下使用watch,建议先升级PM2到最新稳定版。
  • 生产环境不建议长期开启watch功能,生产环境更推荐在CI/CD构建完成后主动执行pm2 reload <实例名>实现零宕机更新,watch仅适合开发、测试环境使用。

内容的提问来源于stack exchange,提问作者niddddddfier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:24:05