坑
用pm2
做進(jìn)程管理,用serve
做靜態(tài)文件服務(wù)器气堕,配置如下:
// pm2.config.js
module.exports = {
apps: [
// ...
{
name: 'music-app',
script: 'serve',
args: '-p 8080 -s build',
}
]
}
問(wèn)題如下:
- 直接訪問(wèn)端口可訪問(wèn)纺腊,點(diǎn)擊鏈接可訪問(wèn)
- 刷新頁(yè)面或直接輸入url畔咧,404
- 命令行使用
serve
直接開(kāi)啟服務(wù)無(wú)以上問(wèn)題
關(guān)于問(wèn)題詳情大力戳這里
查找問(wèn)題
執(zhí)行pm2 show music-app
,結(jié)果如下:
? hehehe git:(master) ? pm2 show music-app
Describing process with id 1 - name music-app
┌───────────────────┬──────────────────────────────────────────────────┐
│ status │ online │
│ name │ music-app │
│ restarts │ 69 │
│ uptime │ 3s │
│ script path │ /usr/local/lib/node_modules/pm2/lib/API/Serve.js │
│ script args │ -p 8080 -s build │
│ error log path │ /Users/xixi/.pm2/logs/music-app-error-1.log │
│ out log path │ /Users/xixi/.pm2/logs/music-app-out-1.log │
│ pid path │ /Users/xixi/.pm2/pids/music-app-1.pid │
│ interpreter │ node │
│ interpreter args │ N/A │
│ script id │ 1 │
│ exec cwd │ /Users/xixi/work/hehehe │
│ exec mode │ fork_mode │
│ node.js version │ 8.6.0 │
│ watch & reload │ ? │
│ unstable restarts │ 0 │
│ created at │ 2017-10-11T10:07:33.119Z │
└───────────────────┴──────────────────────────────────────────────────┘
emmmm揖膜,注意script path
誓沸,顯然執(zhí)行的不是我們要的serve
啊。
摔壹粟!
為什么會(huì)這樣
原因在這里:戳我拜隧!
pm2從2.4.0版本后可以直接開(kāi)啟一個(gè)靜態(tài)文件服務(wù)器了,聽(tīng)起來(lái)很美趁仙,但是:樘怼!幸撕!
它開(kāi)啟靜態(tài)服務(wù)器的指令也叫serve
,所以我們并沒(méi)有能夠用想要的nodejsserve
包開(kāi)啟服務(wù)器薇组,而是使用了pm2內(nèi)置的功能。
由于內(nèi)置的靜態(tài)文件服務(wù)功能并沒(méi)有針對(duì)單頁(yè)應(yīng)用做優(yōu)化坐儿,因此會(huì)出現(xiàn)上述問(wèn)題律胀。
兩個(gè)解決方案
- 直接指定nodejs
serve
包可執(zhí)行文件的路徑:
// pm2.config.js
const path = require('path')
module.exports = {
apps: [
// ...
{
name: 'music-app',
script: path.resolve(__dirname, './node_modules/serve/bin/serve.js'),
args: '-p 8080 -s build',
}
]
}
- 給全局的nodejs
serve
包取一個(gè)別名,比如修改.bashrc
貌矿。
然后執(zhí)行pm2 show music-app
炭菌,結(jié)果如下:
? hehehe git:(master) ? pm2 show music-app
Describing process with id 1 - name music-app
┌───────────────────┬────────────────────────────────────────────────────────────┐
│ status │ online │
│ name │ music-app │
│ restarts │ 0 │
│ uptime │ 8s │
│ script path │ /Users/xixi/work/hehehe/node_modules/serve/bin/serve.js │
│ script args │ build/ -s -p 3030 │
│ error log path │ /Users/xixi/.pm2/logs/music-app-error-1.log │
│ out log path │ /Users/xixi/.pm2/logs/music-app-out-1.log │
│ pid path │ /Users/xixi/.pm2/pids/music-app-1.pid │
│ interpreter │ node │
│ interpreter args │ N/A │
│ script id │ 1 │
│ exec cwd │ /Users/xixi/work/hehehe │
│ exec mode │ fork_mode │
│ node.js version │ 8.6.0 │
│ watch & reload │ ? │
│ unstable restarts │ 0 │
│ created at │ 2017-10-11T10:11:23.846Z │
└───────────────────┴────────────────────────────────────────────────────────────┘
可以看到script path
已經(jīng)是我們想要的路徑,問(wèn)題解決逛漫。