Express.jsチュートリアル:Nodeサーバーを順を追って構築

Express.jsチュートリアル

Express.jsチュートリアル:ルート、ミドルウェア、JSON、Express 5 | We.Inc

Express 5のサーバーを順を追って構築します。ルート、ミドルウェア、JSONボディ、静的ファイル、エラーハンドラーに加え、スターター生成ツールとv4からv5への変更点も紹介します。

ExpressはNode.js向けの小さなWebフレームワークです。npm install expressでインストールし、express()でアプリを作成し、app.get('/', handler)のようにルートを追加して、app.listen(3000)で起動します。express.json()のようなミドルウェアはルートより前に実行され、4つの引数を持つエラーハンドラーは最後に置きます。

Expressの基本要素

Expressのチュートリアルの多くは今でもバージョン4のコードを載せていますが、それらは現在のデフォルトであるバージョン5では動かなかったり警告が出たりします。このガイドでは全編を通してExpress 5を使い、チェックした機能を含むスターターサーバーを生成し、古いプロジェクトをアップグレードするときにつまずきやすい変更点の表で締めくくります。

よくある質問

Express 5に必要なNode.jsのバージョンは?

Express 5にはNode.js 18以降が必要です。古いNodeから移行できない場合は、ランタイムをアップグレードできるまでExpress 4を使い続けてください。

req.bodyがundefinedになるのはなぜですか?

そのリクエストに対してボディパーサーが実行されていません。ルートより前に、JSONならapp.use(express.json())、フォーム送信ならexpress.urlencoded()を追加し、クライアントが対応するContent-Typeヘッダーを送っているか確認してください。Express 5では、解析されていないボディは空のオブジェクトではなくundefinedになります。

Express 5でキャッチオールルートを書くには?

ワイルドカードには名前を付ける必要があります。'/*'の代わりにapp.get('/*splat', handler)を使います。ルートパスにも一致させたい場合は、波かっこで囲みます:'/{*splat}'。

next()は何をしますか?

リクエストを次に一致するミドルウェアまたはルートに渡します。続行するにはnext()、エラーハンドラーへ移るにはnext(err)を呼び出すか、レスポンスを送ってチェーンを止めます。どちらも忘れると、リクエストが応答待ちのままになります。

body-parserはまだ使うべきですか?

JSONとフォームデータには不要です。express.json()とexpress.urlencoded()が組み込まれています。なお、Express 5ではurlencodedパーサーのextendedオプションのデフォルトがfalseです。

ルートとパラメーター

ミドルウェアをひとことで

プロジェクトをセットアップする

インストールして実行

フォルダーを作成し、package.jsonを初期化し、ES moduleプロジェクトとして設定して、Expressをインストールします。

ルートを独自のファイルに分ける

ルーターは小さなアプリです。プレフィックスの下にマウントすると、内部のすべてのパスがそれを基準にした相対パスになります。

asyncのエラーがエラーハンドラーに届く

Express 5では、ルート内でrejectされたPromiseが自動的に転送されます。最後に登録した4引数のハンドラーがそれをレスポンスに変換します。

Express 4から5への変更点

Expressはこれらの多くに対応するcodemodを提供しています:npx codemod@latest @expressjs/v5-migration-recipe。

Express 4のコードとExpress 5での置き換え

スターターサーバー生成ツール

モジュール形式

ES modules(import)

CommonJS(require)

含める機能

JSONボディの解析

public/からの静的ファイル

URLパラメーター付きのルート例

不明なパスへの404レスポンス

エラーハンドラー

ポート

無料で始める · クレジットカード不要

関連: ガイド|Webマーケティングと集客を学ぶ

製品

ご利用いただける方

機能

リソース

会社情報

サイトマップを見る