fastify / fastify/fastify-express
@fastify-express not working inside a plugin
- Dominant language
- JavaScript
- Stars
- 272
- Forks
- 28
- Avg merge
- 1m
- Merged PRs (30d)
- 1
Description
### Prerequisites
- [X] I have written a descriptive issue title
- [X] I have searched existing issues to ensure the bug has not already been reported
### Fastify version
4.x.x
### Plugin version
2.3.0
### Node.js version
16.18.1
### Operating system
macOS
### Operating system version (i.e. 20.04, 11.3, 10)
Ventura 13.0
### Description
Every express middleware (regardless of being an app, router, middleware, or route) mounted inside a fastify plugin isn't working and returns 404. I've added encapsulation tests to mimic the `application.test.js` file, and the only test passing is: `Should not expose the express app on the root fastify instance when registered inside a plugin`.
To make this clearer, this is not working:
```ts
fastify.register(expressPlugin).after(function () {
fastify.register(function (instance, opts, done) {
const express = Express()
express.use(function (req, res, next) {
res.setHeader('x-custom', true)
next()
})
express.get('/hello', (req, res) => {
res.status(201)
res.json({ hello: 'world' })
})
instance.use(express)
done()
})
})
```
### Steps to Reproduce
Clone https://github.com/fox1t/fastify-express and run `npm i && npm run test:unit ./test/encapsulation.test.js`
### Expected Behavior
As far as the docs say, it should be possible to add express apps, routers, middleware, and routes inside a plugin. Ref: https://github.com/fox1t/fastify-express#encapsulation-support
Contributor guide
Assessment
This issue has not been assessed yet.