如何将 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
您的进程,您将看到 readline
、clearline
和 cursorTo
按预期工作。
首先获取您的进程 ID:
$ pm2 id {your-process-name}
[ 7 ]
假设是 7:
$ pm2 attach 7
我有一个 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
您的进程,您将看到 readline
、clearline
和 cursorTo
按预期工作。
首先获取您的进程 ID:
$ pm2 id {your-process-name}
[ 7 ]
假设是 7:
$ pm2 attach 7