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での変更点
削除されたメソッドとプロパティ
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
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
変更点
- パスルートのマッチング構文
// v4 app.get('/*', async (req, res) => { res.send('ok') }) // v5 app.get('/*splat', async (req, res) => { res.send('ok') })
- エラーハンドリングの変更
const server = app.listen(8080, '0.0.0.0', (error) => { if (error) { throw error // 例: EADDRINUSE } console.log(`Listening on ${JSON.stringify(server.address())}`) })
改善点
res.render()
の非同期処理- Brotliエンコーディングのサポート
まとめ
Express 5への移行では、削除されたメソッドの対応、新しいパスルートの構文、エラーハンドリングの変更などを確認しながら適用することが重要です。移行に関する問題が発生した場合は、codemodを活用して対応してください。