-
-
Notifications
You must be signed in to change notification settings - Fork 7.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Middleware not executed when using exclude
in setGlobalPrefix
#13401
Comments
I have tested the reproduction and confirmed that the issue is only present with So the issue is most likely related to this fix: #13337 |
I think this is caused by #11832, which was intended to address the issue of middleware being called multiple times. However, it filters out some paths. This is effective for Express, but not for Fastify |
Currently still affected by this even with latest nestjs (10.3.8) when using the mikro-orm module |
I wonder if reverting this PR #11832 would fix your issue @eric-deeporigin Would you like to try applying an inline patch just to test it out locally? (open node_modules and revert that change to see if it's causing issues for your project) |
@kamilmysliwiec Sorry for the late reply. I did test your changes out, but unfortunately it did not work. My change looks like this in the core/middleware/middleware-module.js file in my node_modules folder of the app Because we are in a monorepo, I had to find all the places where the middleware-module.js was defined and make sure all of them were replaced with the below changes. These are the files I had to update:
(we use NX with pnpm) The change:
Since the rest of the changes were testing/integration changes, I did not revert them. I will work on a minimal repro shortly |
@kamilmysliwiec Here is a reproduction of the bug. It uses MikroORM and GraphQL. https://github.com/eric-deeporigin/nestjs-global-prefix-bug To be clear, the error that is seen is this:
Any endpoint that hits a GQL resolver and uses mikro-orm will throw this error. If a GQL resolver does not use mikro-orm, the error will not be present. Any endpoint that does not hit a GQL resolver (ie, an HTTP/Rest endpoint) does not have this issue. I have followed the instructions specified here on mikro-orm's documentation when using gql + nest + mikro-orm: https://mikro-orm.io/docs/usage-with-nestjs#request-scoping-when-using-graphql The issue goes away when not using |
@eric-deeporigin I'd suggest you to report this to MikroORM repo as well. |
This has been reported on our end many times, no need for yet another report I can't do anything about, it needs to be fixed in nest. |
@kamilmysliwiec any update on this? This is also happening with Express adapter. |
i changed pattern of middleware .forRoutes({ path: '/', method: RequestMethod.ALL }); main.ts app.setGlobalPrefix('/api/v1', {
exclude: [
{ path: '/', method: RequestMethod.GET },
{ path: '/api', method: RequestMethod.GET },
.....
],
}); my app.module.ts export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(RequestMiddleware)
.forRoutes({ path: '*/*', method: RequestMethod.ALL });
} I think it still a bug, there will be a vul, which i cannot test. |
@eric-deeporigin @B4nan hi, I tried the reproduction @eric-deeporigin provided, and I found that adding the
This is because the GraphQL module bypasses the |
Is there an existing issue for this?
Current behavior
In versions 10.3.4+, if using
exclude
insetGlobalPrefix
, e.g.Then middleware stops being executed at all (any sort of middleware).
For reproduction see tests in https://github.com/xtrinch/nestjs-middleware-issue-demo
Minimum reproduction code
https://github.com/xtrinch/nestjs-middleware-issue-demo
Steps to reproduce
yarn test
, observe that the tests do not pass - middleware should attach a header to requestexclude
param fromsetGlobalPrefix
Expected behavior
Middleware should run regardless of exclude in
setGlobalPrefix
Package
@nestjs/common
@nestjs/core
@nestjs/microservices
@nestjs/platform-express
@nestjs/platform-fastify
@nestjs/platform-socket.io
@nestjs/platform-ws
@nestjs/testing
@nestjs/websockets
Other package
No response
NestJS version
10.3.4+
Packages versions
Node.js version
18
In which operating systems have you tested?
Other
No response
The text was updated successfully, but these errors were encountered: