ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
前提
本記事は Node.js と Express の最小構成で HTTP サーバを立ち上げる手順をまとめます。Node.js(および npm)はインストール済みとします。Express 単体の概念は Express 側で扱っているので、ここでは「動かす」ことに集中します。
1. プロジェクトの初期化と Express のインストール
mkdir my-express-app && cd my-express-app
# package.json を生成(質問は全部 Enter で OK)
npm init -y
# Express を依存に追加
npm install express
これで node_modules と package.json に express が登録されます。
2. 最小サーバスクリプト(server.js)
「/ にアクセスすると Express!! と返す」だけの最小構成です。CommonJS 版(require)から見ていきます。
// server.js (CommonJS)
const express = require('express');
const app = express();
const PORT = process.env.PORT || 8000;
// ルーティング: GET /
app.get('/', (req, res) => {
res.send('Express!!');
});
// サーバ起動
app.listen(PORT, () => {
console.log(`サーバ起動中: http://localhost:${PORT}/`);
});
ESM(import)派の場合は package.json に "type": "module" を追記したうえで、次のように書きます。
// server.js (ESM)
import express from 'express';
const app = express();
const PORT = process.env.PORT || 8000;
app.get('/', (req, res) => {
res.send('Express!!');
});
app.listen(PORT, () => {
console.log(`サーバ起動中: http://localhost:${PORT}/`);
});
3. 起動
node server.js
コンソールに サーバ起動中: http://localhost:8000/ と出れば成功です。ブラウザで http://localhost:8000/ を開くと、画面に Express!! と表示されます。
4. ルートを増やす(基本のルーティング)
ルーティングはメソッド名のメソッド(app.get / app.post / ...)に「パス」と「コールバック」を渡すだけで定義できます。
app.get('/health', (req, res) => res.json({ status: 'ok' }));
app.get('/users/:id', (req, res) => {
res.json({ id: req.params.id, name: 'sample' });
});
app.post('/echo', express.json(), (req, res) => {
res.json({ received: req.body });
});
express.json() は Content-Type: application/json のリクエストボディを req.body に展開するビルトインミドルウェアです。POST 受け取りでは必須なので忘れずに。
5. 開発時の自動再起動(nodemon)
node server.js はソース変更時に手動で再起動しないと反映されません。開発中は nodemon を使うとファイル変更で自動再起動してくれます。
# 開発依存に追加
npm install --save-dev nodemon
# 起動
npx nodemon server.js
package.json の scripts に登録しておくとチームでも揃えやすくなります。
{
"scripts": {
"start": "node server.js",
"dev": "nodemon server.js"
}
}
6. ポート番号と環境変数
ポート番号 は次の優先度で決めるのが定番です。
- 環境変数
PORTがセットされていればそれを使う(Heroku / Cloud Run など PaaS の前提) - 無ければ開発用の固定値(
8000/3000)にフォールバック
const PORT = Number(process.env.PORT) || 8000;
ローカルでも環境変数を切り替えたい場合は dotenv パッケージで .env 読み込みを使うと管理しやすくなります。
7. 終了時の後片付け(Graceful Shutdown)
本番運用するなら、SIGTERM を受け取って既存リクエスト処理を完了してから終了する処理を入れておくべきです。コンテナ環境では特に重要になります。
const server = app.listen(PORT, () => {
console.log(`listening on ${PORT}`);
});
const shutdown = () => {
console.log('shutting down...');
server.close(() => {
console.log('http server closed');
process.exit(0);
});
};
process.on('SIGTERM', shutdown);
process.on('SIGINT', shutdown);
よくあるエラーと対処
| エラー | 原因 / 対処 |
|---|---|
Error: listen EADDRINUSE :::8000 | 同じポートを別プロセスが既に使っている。lsof -i :8000(macOS/Linux)/ netstat -ano | findstr :8000(Windows)で PID を確認し、kill / taskkill でリリース |
Cannot find module 'express' | npm install 忘れ、または別フォルダで実行している |
SyntaxError: Unexpected token import | ESM 構文を CommonJS モードで実行している。package.json に "type": "module" を追加するか require 版に書き換え |
req.body が undefined | POST で JSON を受けるのに express.json() を入れていない |
| CORS で弾かれる | 別オリジンの API として呼ぶ場合は cors パッケージを app.use(cors()) で導入 |
関連
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- インストール方法
- サーバーの起動
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?