How to automatically reload Node.js project when using pm2
Solution 1
By default, pm2 doesn’t automatically refresh our server every time we change files. You need to start your pm2 project with the --watch cli argument in order to tell pm2 to refresh when files have changed:
pm2 start id_project --watch
check out the docs for more details, or @rogier-spieker answer which is more detailed.
Solution 2
You need to start your pm2
project with the --watch
option:
pm2 start <script|name|id> --watch
Where <script|name|id>
refers to:
-
script
the path to the script you want to let pm2 handle -
name
the name of the configuration in the "ecosystem" file -
id
refers to an already running application using pm2, which can be obtained usingpm2 list
(note that this would actually require arestart
instead ofstart
, so it's probably the least desirable of the options)
You could also specify which files/directories to ignore:
pm2 start <script> --watch --ignore-watch "node_modules"
Or create an "ecosystem" json file describing how you want pm2
to treat your project:
{
"name": "project_name",
"script": "index.js",
"watch": true,
"ignore_watch": ["node_modules"]
}
Solution 3
pm2 is a Node process manager that has lots of bells and whistles. you can run the below command to automatically restarting the node application when file changes in the directory are detected.
pm2 start index.js --watch
Note that because pm2 runs things in the background, you can’t just ctrl+c
your way out of a running pm2 process. You have to stop it by passing the ID or the name.
pm2 stop 0
pm2 stop index
other two options are below
npx supervisor index.js
nodemon index.js
Mr.Dung
Updated on March 24, 2021Comments
-
Mr.Dung about 3 years
I am currently programming Node.js with Express.js, and every time I change a line of code in the file router or app, I need to type the command:
pm2 reload id_project.
How do I make pm2 auto-reload the project when a file is changed?