Express 是 Node.js 最經典的 Web 框架,以極簡中間件機制和靈活路由著稱。本文針對 Linux 環境,演示從環境準備、Express Generator 安裝、項目脚手架生成、依賴安裝到服務啟動與訪問驗證的標準化流程,並說明模板引擎選擇與常見坑點。
# 方式 1:節點版本管理器 nvm (推薦,多版本切換)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install --lts # 安裝長期支持版 (如 v20.x)
nvm use --lts
# 方式 2:包管理器 (版本可能較舊)
# RHEL/CentOS: yum install nodejs npm (需啟用 EPEL)
# Debian/Ubuntu: apt-get install nodejs npm
# Fedora: dnf install nodejs npm
# 驗證
node --version # v20.15.0
npm --version # 10.7.0
npm install -g express-generator
# 全局安裝,提供 `express` 命令
# 驗證
express --version # 4.18.x
注意:Express 4.x 核心庫不再內置 CLI,必須單獨安裝 express-generator,否則 express 命令不存在。
| 命令 | 模板引擎 | 特點 |
|---|---|---|
express myapp | Jade/Pug (默認) | 縮進敏感、簡潔、學習曲線稍陡 |
express --view=ejs myapp | EJS | 類 HTML 語法、易上手、適合前端協作 |
express --view=hbs myapp | Handlebars | 邏輯少、預編譯快、適合大型團隊 |
express --view=pug myapp | Pug (Jade 更名) | 同 Jade,現代版本 |
express --no-view myapp | 無視圖 (純 API) | REST API、微服務首選 |
express --view=ejs myfirstexpress
cd myfirstexpress
ls
# 輸出目錄結構:
# app.js 入口文件
# bin/www 啟動腳本
# package.json 依賴清單
# public/ 靜態資源 (css, js, images)
# routes/ 路由模塊
# views/ 模板文件 (.ejs)
npm install
# 讀取 package.json 下載所有依賴至 node_modules/
# 開發模式啟動 (需安裝 nodemon: npm install -g nodemon)
nodemon ./bin/www
# 或生產模式
npm start
# 實際執行: node ./bin/www
瀏覽器訪問 https://127.0.0.1:3000 或 curl https://127.0.0.1:3000,應看到「Welcome to Express」頁面。
var express = require('express');
var app = express();
// 視圖引擎設置
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
// 中間件鏈
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
// 路由掛載
var indexRouter = require('./routes/index');
app.use('/', indexRouter);
// 錯誤處理
app.use(function(err, req, res, next) { ... });
module.exports = app;
var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
module.exports = router;
<%= title %>
<%= title %>
Welcome to <%= title %>
| 問題 | 解決方案 |
|---|---|
express: command not found | 未安裝 express-generator 或 npm 全局 bin 目錄不在 PATH 中 |
| 端口 3000 被佔用 | lsof -i :3000 找到進程殺掉,或修改 bin/www 中 port = 3001 |
| 模板渲染錯誤 | 確認 app.set('view engine', 'ejs') 與文件後綴一致,視圖路徑正確 |
| 靜態文件 404 | 檢查 express.static('public') 路徑,URL 不含 /public 前綴 |
| 生產環境部署 | 使用 PM2: pm2 start bin/www --name myapp,配置 Nginx 反向代理,啟用 HTTPS、Gzip、靜態緩存 |
express --no-view api-server
cd api-server
npm install
# 安裝常用中間件
npm install cors helmet morgan dotenv
# app.js 精簡版
const express = require('express');
const app = express();
app.use(require('cors')());
app.use(require('helmet')());
app.use(express.json());
app.get('/api/health', (req, res) => res.json({ status: 'ok' }));
app.use('/api/users', require('./routes/users'));
module.exports = app;

express-generator 獲取 express CLI。express --view=ejs myapp 生成標準項目結構。npm install 安裝依賴,npm start 啟動。https://localhost:3000 驗證。十分鐘構建生產級 Node.js Web 服務基礎架構,Express 的極簡哲學讓您專注於業務邏輯而非框架樣板。
Linux 登入介面個性化:/etc/bashrc、/etc/motd、~/.bashrc 打造專屬歡迎畫面
Linux 系統將 Sublime Text 固定到啟動器的完整教學
提升 Linux 下 Chrome 瀏覽器速度 6 招:更新、停用擴充功能、啟用快速關閉標籤等
Linux 系統下配置與使用 NTP 服務同步時間的完整指南
Linux fdisk 磁碟分區實戰教學:從裝置命名到格式化全流程
CentOS 安裝與配置 Subversion (SVN) 版本控制伺服器完整指南
RedHat yum 提示 Unable to read consumer identity?改用 CentOS 鏡像源免註冊安裝軟體