Search code examples
node.jsreadlinepm2

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


I have a Node.js app that uses the node's native readline to be able to take command-line inputs.

When launching the app with pm2, the command-line input is unavailable.

Any ideas how to solve this issue? Other than using systemd and creating an init script myself?


Solution

  • if you check the pm2 website they clearly mention the following line: Advanced, production process manager for Node.js. So using it in this context is unnecessary as all pm2 does is start your 'node' process and allows you to manage it, the simple way is to use command line args while starting the process.

    for example:

    I myself use commander for this purpose. it manages all my command line arguments (u can see its usage). and with pm2 i use it like following:

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

    notice -- before --env, it is used to separate pm2 arguments from the arguments you want to supply to your process

    p.s.

    PM2 has more complex usage than this, in the terms of process management, i myself use it for production level deployment. If you want to take input from a user every time s/he starts your app, then you should stick with using node command only