【问题标题】:PM2 watch only in dev modePM2 仅在开发模式下观看
【发布时间】:2017-06-26 09:04:38
【问题描述】:

我正在运行一个 node.js 应用程序并使用 pm2 进行启动。 对于 pm2,我创建了一个 process.json 文件来定义我的应用程序和两个环境(prod 和 dev)。

对于开发模式,我想启用 pm2 的 watch 选项,但不是在 prod 模式下。

但我看不出有什么办法来定义它。 此选项在两种模式下都被激活,或者在任何一种模式下都不激活。

你能帮我做这件事吗?

{
"apps": [{
    "name": "myapp",
    "script": "./app.js",
    "watch": ["public", "views"],
    "env": {
        "LOGLEVEL": "debug",
        "LOGFILE": "debug.log"
    },
    "env_production": {
        "LOGLEVEL": "info",
        "LOGFILE": "info.log"
    }
}]
}

【问题讨论】:

  • 你能更详细地解释你的问题和你尝试了什么

标签: node.js pm2


【解决方案1】:

您可以使用 pm2 中包含的pm2-dev

只需删除ecosystem.json 中的watch 标签或将其设置为false

然后:

# Start in development env
pm2-dev ecosystem.json

# Start in production env
pm2 start ecosystem.json --env production

pm2-dev 会自动开启监视模式,pm2 start 则不会。

【讨论】:

    【解决方案2】:

    注意:此解决方案似乎并非 100% 有效。可能取决于设置

    可以在 env 配置中指定手表:

    {
    "apps": [{
        "name": "myapp",
        "script": "./app.js",
        "env": {
            "watch": ["public", "views"],
            "LOGLEVEL": "debug",
            "LOGFILE": "debug.log",
    
        },
        "env_production": {
            "watch": false,
            "LOGLEVEL": "info",
            "LOGFILE": "info.log"
        }
    }]
    }
    

    我测试过的序列:

    1. pm2 start ecosystem.json -> 已启用手表

    2. pm2 delete 0 -> 需要删除应用才能改变环境

    3. pm2 start ecosystem.json --env production -> 手表已禁用

    【讨论】:

    • 这对我不起作用。如果我将 watch 命令放在“env”散列的 外部 (从而迫使我在开发和生产环境中都观察),它只会监视更改。最终,我最终选择了 nodemon 和 nodemon --watch 选项。
    • 这确实有效。您是否注意到监视值具有要监视的路径数组和路径数组,这可能与您的不匹配。如果是这种情况,只需将其设置为 "watch": true 即可观看所有内容并重试
    • 不,它不起作用,您只能将env* 用于环境变量github.com/Unitech/pm2/issues/2264
    • 有趣。它似乎有时有效,有时无效,在那个线程中,它正在为最后评论中的那个人工作。可能在途中发生了一些变化。
    猜你喜欢
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 2021-03-17
    相关资源
    最近更新 更多