宮崎在住エンジニアのジョウ(@JotarO_Oyanagi) です。
Vagrant を Node.js の実行環境として使用していて、ホットリロードとして PM2(Node アプリをデーモン化してくれる)の watch を使う場合、普通の設定だとホットリロードが効かないので、その解決策メモです。
TL;DR
- 環境:centos 7.5, node 8.11.4
-
pm2 start
を ecosystem.config.js または config.json を使用して実行 -
watch_options に
usePolling: true
を設定
書き方の例
ecosystem.config.js
module.exports = {
apps : [{
name: 'MyApp',
script: 'app.js',
watch: true,
watch_options: {
usePolling: true
},
env: {
NODE_ENV: 'development',
name: 'MyApp_dev',
PORT: 3000,
TZ: "Asia/Tokyo"
}
}]
};
config.json
{
"name": "MyApp",
"script": "./app.js",
"watch": true,
"watch_options": {
"usePolling": true
},
"env": {
"NODE_ENV": "development",
"name": "MyApp_dev",
"PORT": 3000,
"TZ": "Asia/Tokyo"
}
}
これだけです。カンタンですね!
終わりに
色々探し回った結果、これだけでよかったのかよ!という複雑な気持ち。