logo

Express.js 5.0.0

Express 5への移行

Express 5は、Express 4と基本的なAPIは同じですが、互換性を損なう変更が含まれています。そのため、Express 4で構築されたアプリケーションをExpress 5に更新すると、正常に動作しない可能性があります。

インストール

Express 5をインストールするには、Node.jsのバージョン18以上が必要です。アプリケーションのディレクトリで次のコマンドを実行します:

npm install "express@^5.0.1"

インストール後、自動テストを実行して失敗箇所を確認し、以下の更新内容に従って問題を修正します。

Express 5 Codemod

Expressサーバーの移行を支援するために、コードを最新バージョンのExpressに自動的に更新するのに役立つcodemodが用意されています。

利用可能なすべてのcodemodを実行するには、次のコマンドを実行します:

npx @expressjs/codemod upgrade

特定のcodemodを実行する場合は、次のコマンドを実行します:

npx @expressjs/codemod name-of-the-codemod

Express 5での変更点

削除されたメソッドとプロパティ

  1. app.del()app.delete()
    // v4
    app.del('/user/:id', (req, res) => {
      res.send(`DELETE /user/${req.params.id}`)
    })
    
    // v5
    app.delete('/user/:id', (req, res) => {
      res.send(`DELETE /user/${req.params.id}`)
    })
    

npx @expressjs/codemod v4-deprecated-signatures


2. **複数形になったメソッド名**
   ```javascript
   // v4
   req.acceptsCharset('utf-8')
   req.acceptsEncoding('br')
   req.acceptsLanguage('en')
   
   // v5
   req.acceptsCharsets('utf-8')
   req.acceptsEncodings('br')
   req.acceptsLanguages('en')
npx @expressjs/codemod pluralized-methods
  1. req.param(name) の削除
    // v4
    const id = req.param('id')
    
    // v5
    const id = req.params.id
    

npx @expressjs/codemod req-param


4. **レスポンスメソッドの変更**
   ```javascript
   // v4
   res.json({ name: 'Ruben' }, 201)
   
   // v5
   res.status(201).json({ name: 'Ruben' })
npx @expressjs/codemod v4-deprecated-signatures

変更点

  1. パスルートのマッチング構文
    // v4
    app.get('/*', async (req, res) => {
      res.send('ok')
    })
    
    // v5
    app.get('/*splat', async (req, res) => {
      res.send('ok')
    })
    
  2. エラーハンドリングの変更
    const server = app.listen(8080, '0.0.0.0', (error) => {
      if (error) {
        throw error // 例: EADDRINUSE
      }
      console.log(`Listening on ${JSON.stringify(server.address())}`)
    })
    

改善点

  1. res.render() の非同期処理
  2. Brotliエンコーディングのサポート

まとめ

Express 5への移行では、削除されたメソッドの対応、新しいパスルートの構文、エラーハンドリングの変更などを確認しながら適用することが重要です。移行に関する問題が発生した場合は、codemodを活用して対応してください。

logo