如何将 pm2 与使用 readline 获取命令行输入的 nodejs 应用程序一起使用?

How to use pm2 with a nodejs app that uses readline for taking command line input?

我有一个 Node.js 应用程序,它使用节点的本机 readline 来接受命令行输入。

使用 pm2 启动应用程序时,命令行输入不可用。

有什么解决这个问题的想法吗?除了使用 systemd 和自己创建初始化脚本之外?

如果你查看 pm2 网站,他们会清楚地提到以下行:Advanced, production process manager for Node.js。所以在这种情况下使用它是不必要的,因为所有 pm2 所做的就是启动你的 'node' 进程并允许你管理它,简单的方法是在启动时使用 命令行参数 过程。

例如:

我自己使用 commander 来达到这个目的。它管理我所有的命令行参数(你可以看到它的用法)。对于 pm2,我使用它如下所示:

pm2 start server.js --name production -- --env dev -p 3458

注意 ----env 之前,它用于将 pm2 参数与您要提供给进程的参数分开

p.s.

PM2的用法比这个更复杂,在流程管理方面,我自己是用它做生产级部署的。如果您想在每次 s/he 启动您的应用程序时都从用户那里获取输入,那么您应该坚持只使用 node 命令

将 pm2 用于 attach 您的进程,您将看到 readlineclearlinecursorTo 按预期工作。

首先获取您的进程 ID:

$ pm2 id {your-process-name}
[ 7 ]

假设是 7:

$ pm2 attach 7