Hexo server port 4000 has been used

前言

當你在使用 Visual Studio Code(VSCode)時,如果在多個終端機上執行相同的 hexo server 命令,可能會遇到以下錯誤:

1
2
3
FATAL Port 4000 has been used. Try other port instead.
FATAL Something's wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.html
Error: listen EADDRINUSE: address already in use :::4000

Hexo port 4000 in use

這是因為 hexo server 預設綁定的端口為 4000。如果你的電腦上已有其他應用程式或專案在使用該端口,就會出現這個問題。

以下是幾種解決這個問題的方法:

檢查運行中的進程

在重新啟動 hexo server 之前,先確認是否有其他軟體或是專案在運行相同的端口。你可以在終端機中使用以下命令檢查端口使用情況:

檢查指令

Windows 系統:

1
netstat -ano | findstr :4000

macOS 或 Linux 系統:

1
lsof -i :4000

如果有進程正在佔用該端口,根據顯示的 PID 終止該進程,下圖的 20152 就是 PID。

Hexo port 4000 list

終止指令

Windows 系統:

1
taskkill /PID <PID> /F

macOS 或 Linux 系統:

1
kill -9 <PID>

下圖為終止端口畫面。

Hexo port 4000 close

使用不同的端口

如果你不想終止運行中的 4000 port,可以選擇使用不同的端口來啟動服務。透過添加 -p 參數來指定新的端口號,例如:

1
hexo server -p 4001

這樣就能在新的端口上啟動服務,避免與其他服務衝突。

修改 Hexo 配置文件

另一種選擇是在 Hexo 的 _config.yml 文件中直接修改伺服器的端口設定。你可以新增以下程式碼:

1
2
3
4
server:
port: 4001
compress: true
header: true

這樣,hexo server 將會自動使用你指定的端口,避免未來的衝突。

總結

以上幾種方法可有效解決 hexo server 的端口衝突問題。根據你的需求選擇最合適的解決方案,可以提升開發效率,避免不必要的錯誤。如果經常遇到端口衝突的情況,建議考慮長期使用不同端口或管理運行中的端口,以確保你的工作不受干擾。