ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?