You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Unable to use Express middleware due to request type incompatible #285
The documentations and this issue say that Express/Connect middlewares are supported but looking through the code it seems like request type is not converted to what Express middlewars expect, I see in the HttpRequest type from @deepkit/http there is no get(headerName) method from Express docs here.
/root/dev/web/deepkit-starter/node_modules/.pnpm/express@4.18.1/node_modules/express/lib/router/layer.js:95
fn(req, res, next);
^
TypeError: req.get is not a function
at /root/dev/web/deepkit-starter/node_modules/.pnpm/express-openid-connect@2.7.3_express@4.18.1/node_modules/express-openid-connect/lib/appSession.js:269:37
at Layer.handle [as handle_request] (/root/dev/web/deepkit-starter/node_modules/.pnpm/express@4.18.1/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/root/dev/web/deepkit-starter/node_modules/.pnpm/express@4.18.1/node_modules/express/lib/router/index.js:328:13)
at /root/dev/web/deepkit-starter/node_modules/.pnpm/express@4.18.1/node_modules/express/lib/router/index.js:286:9
at Function.process_params (/root/dev/web/deepkit-starter/node_modules/.pnpm/express@4.18.1/node_modules/express/lib/router/index.js:346:12)
at next (/root/dev/web/deepkit-starter/node_modules/.pnpm/express@4.18.1/node_modules/express/lib/router/index.js:280:10)
at Function.handle (/root/dev/web/deepkit-starter/node_modules/.pnpm/express@4.18.1/node_modules/express/lib/router/index.js:175:3)
at OidcMiddleware.router [as expressOpenid] (/root/dev/web/deepkit-starter/node_modules/.pnpm/express@4.18.1/node_modules/express/lib/router/index.js:47:12)
at OidcMiddleware.execute (/root/dev/web/deepkit-starter/src/auth/file:/root/dev/web/deepkit-starter/src/auth/oidc.ts:29:10)
at Object.fn (eval at build (/root/dev/web/deepkit-starter/node_modules/.pnpm/@deepkit+core@1.0.1-alpha.65/node_modules/@deepkit/core/src/compiler.ts:95:20), <anonymous>:61:100)
[ERROR] 12:25:21 TypeError: req.get is not a function
Child got SIGTERM, exiting.
I wonder though why in the stack trace is express code node_modules/.pnpm/express@4.18.1/node_modules/express/lib/router/layer.js:95. Are you using express and Deepkit at the same time?
Ah maybe it's because compression and forcedomain don't try to call req.get. My code was just complaining about a type error in the IDE, but it runs properly.
Activity
devonpmack commentedon Jul 2, 2022
I also can reproduce with the libraries
compressionandforcedomain. But it works as expected if you just cast to any.NexZhu commentedon Jul 2, 2022
Casting to any didn't work for me with https://github.com/auth0/express-openid-connect
marcj commentedon Jul 2, 2022
I think we have to adjust https://github.com/deepkit/deepkit-framework/blob/master/packages/http/src/model.ts#L179 in order to make it compatible with the request object interface required by those middlewares.
marcj commentedon Jul 2, 2022
I wonder though why in the stack trace is express code
node_modules/.pnpm/express@4.18.1/node_modules/express/lib/router/layer.js:95. Are you using express and Deepkit at the same time?NexZhu commentedon Jul 3, 2022
No, I'm just using a type from
express(needed by theexpress-openid-connectmiddleware, here's my code:NexZhu commentedon Jul 3, 2022
Casting the arguments to the exact types expected by the middleware still results in the same error:
NexZhu commentedon Jul 3, 2022
@devonpmack Could you please share your code?
devonpmack commentedon Jul 4, 2022
Ah maybe it's because
compressionandforcedomaindon't try to callreq.get. My code was just complaining about a type error in the IDE, but it runs properly.If I take out
as anyNexZhu commentedon Jul 5, 2022
Yeah, seems to be different cases, my error happened in run time.
feat(http): add Express-compatible get() and header() methods (#285)
docs: update todo.md with #285 completion
feat(http): add CORS support, Express compat, and 5 bug fixes