Express.js Wildcard Route — TypeError: The "*" modifier must follow a named parameter

Kendala

Setelah deploy digital garden baru (https://mikhsan.id) ke server dan install Express.js (dengan manual npm install), mendapati error:

Run `npm audit` for details./app/node_modules/path-to-regexp/dist/index.js:108 throw new PathError(`Missing parameter name at index ${index}`, str); ^PathError [TypeError]: Missing parameter name at index 1: *; visit https://git.new/pathToRegexpError for info at consumeUntil (/app/node_modules/path-to-regexp/dist/index.js:108:27) at parse (/app/node_modules/path-to-regexp/dist/index.js:140:26) at process (/app/node_modules/path-to-regexp/dist/index.js:263:56) at pathToRegexp (/app/node_modules/path-to-regexp/dist/index.js:274:5) at Object.match (/app/node_modules/path-to-regexp/dist/index.js:225:30) at matcher (/app/node_modules/router/lib/layer.js:86:23) at new Layer (/app/node_modules/router/lib/layer.js:93:62) at Function.route (/app/node_modules/router/index.js:428:17) at Function.route (/app/node_modules/express/lib/application.js:257:22) at app.<computed> [as get] (/app/node_modules/express/lib/application.js:478:22) { originalPath: '*'}Node.js v18.20.5

Tanpa sepengetahuan saya bahwa Express.js yang diinstall adalah versi 5, berbeda dari versi yang dipakai di digital garden ini (masih v4).

Di Express v4, Anda bisa menggunakan asterisk tunggal * sebagai catch-all. Di Express v5, semua wildcard wajib memiliki nama. Tanpa nama, parser akan menganggapnya sebagai parameter yang tidak valid dan melempar PathError.

Cara Memperbaikinya

Solusi: cari semua route yang menggunakan *, kemudian ubah dengan memberikan nama parameter (misal: *splat atau *path).

1. Rute Catch-all (Global)

2. Wildcard Parsial

3. Alternatif: Menggunakan RegEx

Kalau nggak mau pakai penamaan, gunakan literal Regular Expression:

app.get(/.*/, (req, res) => { ... });

Express v5 menggunakan path-to-regexp v8.0+. Library ini sekarang memperlakukan asterisk * mirip dengan parameter bernama (seperti :id).

Ingin kembali ke Express 4?

Menurunkan versi Express kembali ke v4 dengan perintah: npm install express@4


BelajarDev merupakan bagian dari eksperimen Muhammad Ikhsan di Smartech Studios.