// npm install express6
import { express } from 'express'
const app = express()
app.get('/', (req, res) => {
res.send('Hello World')
})
app.listen(3000)
What?
- Clone of express.js v4.17.1 (master branch from Aug 14, 2021)
- Converted to TypeScript
- Updated all dependencies
- Manually merged branch 5 (except new router)
Why?
I love express and would love to see people using it for at least another 10 years!
What about "Unhandled Promise Rejection"?
This has been take care of
ESModules?
It is ready to be exported as esm, but express6 v1 is all about compatibility with express v4, therefore express6 is ships as commonjs.
New
I added req.URL
, a short-hand getter for new URL(this.req, `http://${req.headers.host}`)
.
Types
The types are simpler and a bit different than in express v4. For example, all 3 app.use()
below are valid, but express6 throws a type error on the third app.use()
. In the example below, I recommend using the spread operator.
Middleware with TypeScript
// some middleware
const midi = (req, res, next) => next()
app.get('/', ...[midi, midi], (req, res) => {})
app.get('/', midi, midi, (req, res) => {})
// @ts-ignore
app.get('/', [midi, midi], (req, res) => {})
Error routes with TypeScript
import type { Request, Response, NextFunction } from 'express6'
// @ts-ignore
app.use((err: any, req: Request, res: Response, next: NextFunction) => {
console.log('ERROR:', err)
return res.send(err)
})
Todo
- improve types
- remove all
@ts-ignore
- stricten
tsconfig
Make a PR!
Breaking Changes?
Yes, same as Express v5.
Everything Else?
Same as expressjs.