具有多个参数的 PM2 启动脚本(服务)

PM2 start script with multiple arguments (serve)

我正在尝试 运行 serve frontend/dist -l 4000 来自 PM2。这应该在端口 4000 上为 Vue 应用程序提供服务。

在我的 ecosystem.config.js 中,我有:

    {
      name: 'parker-frontend',
      max_restarts: 5,
      script: 'serve',
      args: 'frontend/dist -l 4000',
      instances: 1,
    },

但是当我执行 pm2 start 时,在日志中我有以下消息:

Exposing /var/lib/jenkins/workspace/parker/frontend/dist directory on port NaN

而如果我 运行 相同的命令:serve frontend/dist -l 4000,它 运行 在端口 4000 上没问题。

在 运行 serve frontend/dist -l 5000 之后,我在 PM2 日志中收到一个错误。

在它的调用堆栈中我发现:

at Object.<anonymous> (/usr/lib/node_modules/pm2/lib/API/Serve.js:242:4)

注意路径:/usr/lib/node_modules/pm2/lib/API/Serve.js

在 pm2 本身中有 另一个称为 serve 命令是 运行 而不是正确的命令。这不是我之前安装的npm i -g serve。这是由于 Node 包解析的工作方式 - 它首先优先考虑本地模块。

要使用全局安装的版本(正确的版本),您需要指定全局 serve.

的确切路径

要在 Linux 上找到路径,您可以这样做:

$ which serve
/usr/local/bin/serve

然后把路径放在你的ecosystem.config.jsscript属性.

最终工作ecosystem.config.js:

    {
      name: 'parker-frontend',
      script: '/usr/local/bin/serve', //pm2 has it's own 'serve' which doesn't work, make sure to use global
      args: 'frontend/dist -l 5000',
      instances: 1,
    },
    ```